Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
						commit
						704b1c9390
					
				| 
						 | 
					@ -435,6 +435,117 @@
 | 
				
			||||||
            系统模板文档配置表   
 | 
					            系统模板文档配置表   
 | 
				
			||||||
            </summary>	
 | 
					            </summary>	
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.CRCVisitListExport(IRaCIS.Core.Application.Contracts.CRCVisitSearchDTO,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            影像上传列表    只导出已上传状态的访视记录
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="visitSearchDTO"></param>
 | 
				
			||||||
 | 
					            <param name="_commonDocumentRepository"></param>
 | 
				
			||||||
 | 
					            <param name="_dictionaryService"></param>
 | 
				
			||||||
 | 
					            <param name="_subjectVisitRepository"></param>
 | 
				
			||||||
 | 
					            <param name="_trialRepository"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetQCChallengeList_Export(IRaCIS.Core.Application.Contracts.ChallengeQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					             质疑列表   
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="challengeQuery"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetSubjectList_Export(IRaCIS.Application.Contracts.SubjectQueryParam,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            受试者信息导出表
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="param"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetSubjectReadingPeriod_Export(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            受试者 阅片期 进度表 导出
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="param"></param>
 | 
				
			||||||
 | 
					            <param name="_commonDocumentRepository"></param>
 | 
				
			||||||
 | 
					            <param name="_dictionaryService"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetReadingPeriodList_Export(IRaCIS.Core.Application.Contracts.ReadPeriodQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            阅片期信息表
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="param"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetDicomAndNoneDicomStudyList_Export(IRaCIS.Core.Application.Contracts.StudyQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            一致性核查  检查信息表
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="studyQuery"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetConsistencyVerificationList_Export(IRaCIS.Core.Application.Contracts.CheckQuery,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.SubjectVisit})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            一致性核查记录表  
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="checkQuery"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetReadingTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            PM阅片跟踪
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetReReadingTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            PM 重阅追踪 
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetMedicalReviewTaskList_Export(IRaCIS.Core.Application.ViewModel.TaskMedicalReviewQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            PM  医学审核(挑选任务生成后的列表)
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="inQuery"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetSelfAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            自身一致性分析
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetGroupAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            组件一致性分析
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="inQuery"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetOverallTumorEvaluationList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            整体肿瘤评估   多个标准一个接口   Excel 列是一样的
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetEvaluationOfTumorEfficacy_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					             肿瘤疗效评估表   ( 目前 RECIST1.1)
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetDetailedOfEvaluatedLesion_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            评估病灶明细表   ( 目前 RECIST1.1  PGW3 表都是不同的)
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="T:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService">
 | 
					        <member name="T:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            TrialEmailNoticeConfigService
 | 
					            TrialEmailNoticeConfigService
 | 
				
			||||||
| 
						 | 
					@ -7814,115 +7925,6 @@
 | 
				
			||||||
            <param name="subjectVisitId"></param>
 | 
					            <param name="subjectVisitId"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.CRCVisitListExport(IRaCIS.Core.Application.Contracts.CRCVisitSearchDTO,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            影像上传列表    只导出已上传状态的访视记录
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="visitSearchDTO"></param>
 | 
					 | 
				
			||||||
            <param name="_commonDocumentRepository"></param>
 | 
					 | 
				
			||||||
            <param name="_dictionaryService"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetQCChallengeList_Export(IRaCIS.Core.Application.Contracts.ChallengeQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
             质疑列表   
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="challengeQuery"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetSubjectList_Export(IRaCIS.Application.Contracts.SubjectQueryParam,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            受试者信息导出表
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="param"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetSubjectReadingPeriod_Export(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            受试者 阅片期 进度表 导出
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="param"></param>
 | 
					 | 
				
			||||||
            <param name="_commonDocumentRepository"></param>
 | 
					 | 
				
			||||||
            <param name="_dictionaryService"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetReadingPeriodList_Export(IRaCIS.Core.Application.Contracts.ReadPeriodQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            阅片期信息表
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="param"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetDicomAndNoneDicomStudyList_Export(IRaCIS.Core.Application.Contracts.StudyQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            一致性核查  检查信息表
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="studyQuery"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetConsistencyVerificationList_Export(IRaCIS.Core.Application.Contracts.CheckQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            一致性核查记录表  
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="checkQuery"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetReadingTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            PM阅片跟踪
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetReReadingTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            PM 重阅追踪 
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetMedicalReviewTaskList_Export(IRaCIS.Core.Application.ViewModel.TaskMedicalReviewQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            PM  医学审核(挑选任务生成后的列表)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="inQuery"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetSelfAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            自身一致性分析
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetGroupAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            组件一致性分析
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="inQuery"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetOverallTumorEvaluationList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            整体肿瘤评估   多个标准一个接口   Excel 列是一样的
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetEvaluationOfTumorEfficacy_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
             肿瘤疗效评估表   ( 目前 RECIST1.1)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetDetailedOfEvaluatedLesion_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            评估病灶明细表   ( 目前 RECIST1.1  PGW3 表都是不同的)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetCRCVisitList(IRaCIS.Core.Application.Contracts.CRCVisitSearchDTO)">
 | 
					        <member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetCRCVisitList(IRaCIS.Core.Application.Contracts.CRCVisitSearchDTO)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            CRC 访视上传列表
 | 
					            CRC 访视上传列表
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,792 @@
 | 
				
			||||||
 | 
					using IRaCIS.Application.Contracts;
 | 
				
			||||||
 | 
					using IRaCIS.Application.Interfaces;
 | 
				
			||||||
 | 
					using IRaCIS.Core.Application.Contracts;
 | 
				
			||||||
 | 
					using IRaCIS.Core.Application.Service.Reading.Dto;
 | 
				
			||||||
 | 
					using IRaCIS.Core.Application.ViewModel;
 | 
				
			||||||
 | 
					using IRaCIS.Core.Domain.Share;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Authorization;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Mvc;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace IRaCIS.Core.Application.Service.Common
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class ExcelExportService : BaseService
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region 导表查询
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 影像上传列表    只导出已上传状态的访视记录
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="visitSearchDTO"></param>
 | 
				
			||||||
 | 
					        /// <param name="_commonDocumentRepository"></param>
 | 
				
			||||||
 | 
					        /// <param name="_dictionaryService"></param>
 | 
				
			||||||
 | 
					        /// <param name="_subjectVisitRepository"></param>
 | 
				
			||||||
 | 
					        /// <param name="_trialRepository"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        [AllowAnonymous]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> CRCVisitListExport(CRCVisitSearchDTO visitSearchDTO,
 | 
				
			||||||
 | 
					            [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					            [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					            [FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
 | 
				
			||||||
 | 
					            [FromServices] IRepository<Trial> _trialRepository
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var svExpression = QCCommon.GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId)
 | 
				
			||||||
 | 
					                       .Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true)
 | 
				
			||||||
 | 
					                       .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId)
 | 
				
			||||||
 | 
					                       .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId)
 | 
				
			||||||
 | 
					                       .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                       .WhereIf(visitSearchDTO.VisitPlanArray != null && visitSearchDTO.VisitPlanArray?.Length > 0, svExpression)
 | 
				
			||||||
 | 
					                       //.WhereIf(!string.IsNullOrEmpty(visitSearchDTO.VisitPlanInfo), visitSearchDTO.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(visitSearchDTO.VisitPlanInfo))
 | 
				
			||||||
 | 
					                       .WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState))
 | 
				
			||||||
 | 
					                       .WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState)
 | 
				
			||||||
 | 
					                       .WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState)
 | 
				
			||||||
 | 
					                       .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent)
 | 
				
			||||||
 | 
					                       .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
				
			||||||
 | 
					                       .ProjectTo<CRCVisitExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.BlindName).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == visitSearchDTO.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialCRCUploadImageList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CRCVisitExportDTO));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  质疑列表   
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="challengeQuery"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        [AllowAnonymous]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetQCChallengeList_Export(ChallengeQuery challengeQuery,
 | 
				
			||||||
 | 
					             [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					            [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					            [FromServices] IRepository<Trial> _trialRepository
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var svExpression = QCCommon.GetQCChallengeFilter(challengeQuery.VisitPlanArray);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId)
 | 
				
			||||||
 | 
					                //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum)
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed)
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId)
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.SubjectId != null, t => t.SubjectVisit.SubjectId == challengeQuery.SubjectId)
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.CreateUserId != null, t => t.CreateUserId == challengeQuery.CreateUserId)
 | 
				
			||||||
 | 
					                .WhereIf(!string.IsNullOrEmpty(challengeQuery.SubjectCode), t => t.SubjectVisit.Subject.Code.Contains(challengeQuery.SubjectCode))
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.VisitPlanArray != null && challengeQuery.VisitPlanArray?.Length > 0, svExpression)
 | 
				
			||||||
 | 
					                //.WhereIf(!string.IsNullOrEmpty(challengeQuery.VisitPlanInfo), challengeQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.InPlan == false : t => t.SubjectVisit.VisitNum == decimal.Parse(challengeQuery.VisitPlanInfo))
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.IsUrgent != null, t => t.SubjectVisit.IsUrgent == challengeQuery.IsUrgent)
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.IsOverTime != null && challengeQuery.IsOverTime == true, t => t.IsClosed ? t.ClosedTime > t.DeadlineTime : DateTime.Now > t.DeadlineTime)
 | 
				
			||||||
 | 
					                .WhereIf(challengeQuery.IsOverTime != null && challengeQuery.IsOverTime == false, t => t.IsClosed ? t.ClosedTime < t.DeadlineTime : DateTime.Now < t.DeadlineTime)
 | 
				
			||||||
 | 
					                .ProjectTo<QCChanllengeExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.ChallengeCode).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == challengeQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialQCImageChanllengeList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCChanllengeExportDto));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 受试者信息导出表
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="param"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetSubjectList_Export(SubjectQueryParam param,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                 [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _repository.Where<Subject>(u => u.TrialId == param.TrialId)
 | 
				
			||||||
 | 
					                  .WhereIf(!string.IsNullOrWhiteSpace(param.Code), t => t.Code.Contains(param.Code))
 | 
				
			||||||
 | 
					                  .WhereIf(!string.IsNullOrWhiteSpace(param.Name), t => t.ShortName.Contains(param.Name))
 | 
				
			||||||
 | 
					                  .WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex))
 | 
				
			||||||
 | 
					                  .WhereIf(param.Status != null, t => t.Status == param.Status)
 | 
				
			||||||
 | 
					                  .WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId)
 | 
				
			||||||
 | 
					                  // CRC  只负责他管理site的受试者
 | 
				
			||||||
 | 
					                  .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
				
			||||||
 | 
					                  .ProjectTo<SubjectExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.Code).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectExportDTO));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 受试者 阅片期 进度表 导出
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="param"></param>
 | 
				
			||||||
 | 
					        /// <param name="_commonDocumentRepository"></param>
 | 
				
			||||||
 | 
					        /// <param name="_dictionaryService"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetSubjectReadingPeriod_Export(GetReadModuleDto dto,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                 [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _repository.Where<Subject>(u => u.TrialId == dto.TrialId)
 | 
				
			||||||
 | 
					                    .WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
 | 
				
			||||||
 | 
					                    .WhereIf(dto.TrialSiteCode != null && dto.TrialSiteCode != string.Empty, x => x.TrialSite.TrialSiteCode == dto.TrialSiteCode)
 | 
				
			||||||
 | 
					                    .WhereIf(dto.SubjectCode != null && dto.SubjectCode != string.Empty, x => x.Code == dto.SubjectCode)
 | 
				
			||||||
 | 
					                    //.WhereIf(dto.ReadingStatus != null, x => x.ReadingStatus == dto.ReadingStatus)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    .ProjectTo<SubjectExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.Code).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == dto.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectExportDTO));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 阅片期信息表
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="param"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetReadingPeriodList_Export(ReadPeriodQuery param,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                 [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _repository.Where<ReadModule>(u => u.TrialId == param.TrialId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  .ProjectTo<ReadPeriodExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectReadingPeriodList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadPeriodExportDto));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 一致性核查  检查信息表
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="studyQuery"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetDicomAndNoneDicomStudyList_Export(StudyQuery studyQuery,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                 [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var svExpression = QCCommon.GetDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var dicomStudyQuery = _repository.Where<DicomStudy>(t => t.TrialId == studyQuery.TrialId)
 | 
				
			||||||
 | 
					                    .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
				
			||||||
 | 
					                      .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression)
 | 
				
			||||||
 | 
					                    .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
 | 
				
			||||||
 | 
					                    .Select(t => new UnionStudyExportDTO()
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        VisitName = t.SubjectVisit.VisitName,
 | 
				
			||||||
 | 
					                        VisitNum = t.SubjectVisit.VisitNum,
 | 
				
			||||||
 | 
					                        IsDicom = true,
 | 
				
			||||||
 | 
					                        SubjectCode = t.Subject.Code,
 | 
				
			||||||
 | 
					                        Modality = t.Modalities,
 | 
				
			||||||
 | 
					                        StudyCode = t.StudyCode,
 | 
				
			||||||
 | 
					                        StudyTime = t.StudyTime,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        TrialSiteCode = t.TrialSite.TrialSiteCode,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        CheckState = t.SubjectVisit.CheckState,
 | 
				
			||||||
 | 
					                        //Uploader = t.Uploader.UserName,
 | 
				
			||||||
 | 
					                        //UploadTime = t.CreateTime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var svExpression2 = QCCommon.GetNoneDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var nodeDicomStudyQuery = _repository.Where<NoneDicomStudy>(t => t.TrialId == studyQuery.TrialId)
 | 
				
			||||||
 | 
					                .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
				
			||||||
 | 
					                 .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression2)
 | 
				
			||||||
 | 
					                 .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 .Select(t => new UnionStudyExportDTO()
 | 
				
			||||||
 | 
					                 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     VisitName = t.SubjectVisit.VisitName,
 | 
				
			||||||
 | 
					                     VisitNum = t.SubjectVisit.VisitNum,
 | 
				
			||||||
 | 
					                     IsDicom = false,
 | 
				
			||||||
 | 
					                     SubjectCode = t.Subject.Code,
 | 
				
			||||||
 | 
					                     Modality = t.Modality,
 | 
				
			||||||
 | 
					                     StudyCode = t.StudyCode,
 | 
				
			||||||
 | 
					                     StudyTime = t.ImageDate,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     TrialSiteCode = t.TrialSite.TrialSiteCode,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     CheckState = t.SubjectVisit.CheckState,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     //Uploader = t.CreateUser.UserName,
 | 
				
			||||||
 | 
					                     //UploadTime = t.CreateTime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await dicomStudyQuery.Union(nodeDicomStudyQuery)
 | 
				
			||||||
 | 
					              .ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == studyQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialStudyList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(UnionStudyExportDTO));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 一致性核查记录表  
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="checkQuery"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetConsistencyVerificationList_Export(CheckQuery checkQuery,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository,
 | 
				
			||||||
 | 
					                 [FromServices] IRepository<SubjectVisit> _subjectVisitRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var svExpression = QCCommon.GetSubjectVisitFilter(checkQuery.VisitPlanArray);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _subjectVisitRepository.Where(x => x.TrialId == checkQuery.TrialId)
 | 
				
			||||||
 | 
					                        .Where(x => x.AuditState == AuditStateEnum.QCPassed) //一致性核查中的,或者还没一致性核查的                                                                                                                 
 | 
				
			||||||
 | 
					                        .WhereIf(checkQuery.CheckState != null, t => t.CheckState == checkQuery.CheckState)
 | 
				
			||||||
 | 
					                        .WhereIf(checkQuery.SiteId != null, t => t.SiteId == checkQuery.SiteId)
 | 
				
			||||||
 | 
					                        .WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
 | 
				
			||||||
 | 
					                        .WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression)
 | 
				
			||||||
 | 
					                        .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//CRC 过滤负责的site
 | 
				
			||||||
 | 
					                        .ProjectTo<PMKCheckEXportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == checkQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectVisitCheckList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PMKCheckEXportDTO));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// PM阅片跟踪
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetReadingTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var list = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false)
 | 
				
			||||||
 | 
					                //.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode) || t.BlindSubjectCode.Contains(queryVisitTask.SubjectCode))
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
				
			||||||
 | 
					               .ProjectTo<ReadingTaskExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId), nameof(VisitTask.VisitTaskNum) };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReadingTaskList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadingTaskExportDto));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// PM 重阅追踪 
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetReReadingTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _repository.Where<VisitTaskReReading>(t => t.OriginalReReadingTask.TrialId == queryVisitTask.TrialId /*&& t.OriginalReReadingTask.IsAnalysisCreate == false*/)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId)
 | 
				
			||||||
 | 
					                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!))
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.TaskState != null, t => t.OriginalReReadingTask.TaskState == queryVisitTask.TaskState)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.OriginalReReadingTask.ReReadingApplyState == queryVisitTask.ReReadingApplyState)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.SubjectId != null, t => t.OriginalReReadingTask.SubjectId == queryVisitTask.SubjectId)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.IsUrgent != null, t => t.OriginalReReadingTask.IsUrgent == queryVisitTask.IsUrgent)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.DoctorUserId != null, t => t.OriginalReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.OriginalReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.OriginalReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
				
			||||||
 | 
					                 .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.OriginalReReadingTask.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.OriginalReReadingTask.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate) || (t.OriginalReReadingTask.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.OriginalReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
				
			||||||
 | 
					                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode) || t.OriginalReReadingTask.BlindSubjectCode.Contains(queryVisitTask.SubjectCode))
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
				
			||||||
 | 
					                .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
				
			||||||
 | 
					                .ProjectTo<ReReadingTaskExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //var defalutSortArray = new string[] { nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.IsUrgent) + " desc", nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.SubjectId), nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.VisitTaskNum) };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReReadingTaskList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReReadingTaskExportDto));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// PM  医学审核(挑选任务生成后的列表)
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="inQuery"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetMedicalReviewTaskList_Export(TaskMedicalReviewQuery inQuery,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _repository.Where<TaskMedicalReview>(t => t.VisitTask.TrialId == inQuery.TrialId)
 | 
				
			||||||
 | 
					                             .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId)
 | 
				
			||||||
 | 
					                             .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId)
 | 
				
			||||||
 | 
					                             .WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode))
 | 
				
			||||||
 | 
					                             .WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.VisitTask.TaskName.Contains(inQuery.TaskName) || t.VisitTask.TaskBlindName.Contains(inQuery.TaskName))
 | 
				
			||||||
 | 
					                             .WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
 | 
				
			||||||
 | 
					                             .WhereIf(inQuery.DoctorUserId != null, t => t.VisitTask.DoctorUserId == inQuery.DoctorUserId)
 | 
				
			||||||
 | 
					                             .WhereIf(!string.IsNullOrEmpty(inQuery.TrialSiteCode), t => (t.VisitTask.BlindTrialSiteCode.Contains(inQuery.TrialSiteCode) && t.VisitTask.IsAnalysisCreate) || (t.VisitTask.Subject.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode) && t.VisitTask.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					                             .WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory)
 | 
				
			||||||
 | 
					                             .WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                               .WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					                             .ProjectTo<TaskMedicalReviewExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TaskMedicalReviewExportDto));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 自身一致性分析
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetSelfAnalysisTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //产生一致性分析的Subject
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var subjectQuerybal = _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == true).Select(t => t.SubjectId).Distinct();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var allList = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit)
 | 
				
			||||||
 | 
					                .Where(t => t.IsSelfAnalysis == true || t.IsSelfAnalysis == null) //一致性分析的结果 + 正常任务的结果 + 仅仅访视的结果
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
				
			||||||
 | 
					               .ProjectTo<SelftAnalysisExport>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = allList.Where(t => t.IsSelfAnalysis == null).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //To do 根据任务Id  找对评估结果,这里需要考虑标准  以及对应的翻译
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //基线和访视的评估结果翻译枚举 分别对应着
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (var item in list)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //找到一致性分析的结果
 | 
				
			||||||
 | 
					                var selfAnalysisTask = allList.Where(t => t.IsSelfAnalysis == true && t.SubjectCode == item.SubjectCode && t.VisitTaskNum == item.VisitTaskNum && t.TaskName == t.TaskName).FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //因为基线的评估结果是 是否存在疾病 而 其他访视的结果是 整体肿瘤评估结果 是用不同的枚举翻译的 所以这里手动翻译 不把翻译逻辑耦合到通用的翻译代码里面 在此特殊处理
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                item.AgainEvaluateResult = selfAnalysisTask?.EvaluateResult ?? String.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //将自身一致性分析的字段 赋值到访视任务这个字段
 | 
				
			||||||
 | 
					                item.IsAnalysisDiffToOriginalData = selfAnalysisTask.IsAnalysisDiffToOriginalData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SelftAnalysisExport));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 组件一致性分析
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="inQuery"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetGroupAnalysisTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //产生组间一致性分析的Subject
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var subjectQuerybal = _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == false).Select(t => t.SubjectId).Distinct();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var allList = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit)
 | 
				
			||||||
 | 
					                .Where(t => t.IsSelfAnalysis == false || t.IsSelfAnalysis == null) //一致性分析的结果 + 正常任务的结果 +仅仅访视的结果
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
				
			||||||
 | 
					               .ProjectTo<GroupAnalysisExport>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = allList.Where(t => t.IsSelfAnalysis == null).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //To do 根据任务Id  找对评估结果,这里需要考虑标准  以及对应的翻译
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (var item in list)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //找到一致性分析的结果
 | 
				
			||||||
 | 
					                var groupAnalysisTask = allList.Where(t => t.IsSelfAnalysis == false && t.SubjectCode == item.SubjectCode && t.VisitTaskNum == item.VisitTaskNum && t.TaskName == t.TaskName).FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                item.AgainEvaluateResult = groupAnalysisTask?.EvaluateResult ?? String.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TaskMedicalReviewExportDto));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 整体肿瘤评估   多个标准一个接口   Excel 列是一样的
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetOverallTumorEvaluationList_Export(VisitTaskQuery queryVisitTask,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //每次查询必须是单标准的
 | 
				
			||||||
 | 
					            var criterionType = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
				
			||||||
 | 
					               .ProjectTo<OverallTumorEvaluationExport>(_mapper.ConfigurationProvider, new { criterionType = criterionType }).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(OverallTumorEvaluationExport), criterionType);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///  肿瘤疗效评估表   ( 目前 RECIST1.1)
 | 
				
			||||||
 | 
					        /// </summa
 | 
				
			||||||
 | 
					        /// <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetEvaluationOfTumorEfficacy_Export(VisitTaskQuery queryVisitTask,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //每次查询必须是单标准的
 | 
				
			||||||
 | 
					            var criterionType = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var query = _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (criterionType == CriterionType.RECIST1Pointt1)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var list = await query.ProjectTo<RECIST1Point1EvaluationOfTumorEfficacyExport>(_mapper.ConfigurationProvider, new { criterionType = criterionType }).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                exportInfo.List = list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1EvaluationOfTumorEfficacyExport), criterionType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new Exception("当前标准导出还未支持");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 评估病灶明细表   ( 目前 RECIST1.1  PGW3 表都是不同的)
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="queryVisitTask"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> GetDetailedOfEvaluatedLesion_Export(VisitTaskQuery queryVisitTask,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
				
			||||||
 | 
					                [FromServices] IDictionaryService _dictionaryService,
 | 
				
			||||||
 | 
					                [FromServices] IRepository<Trial> _trialRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //每次查询必须是单标准的
 | 
				
			||||||
 | 
					            var criterionType = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var query = _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
				
			||||||
 | 
					               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
				
			||||||
 | 
					               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
				
			||||||
 | 
					               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (criterionType == CriterionType.RECIST1Pointt1)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var list = await query.ProjectTo<RECIST1Point1DetailedOfEvaluatedLesionExport>(_mapper.ConfigurationProvider, new { criterionType = criterionType, isEn_Us = _userInfo.IsEn_Us }).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var exportList = list.SelectMany(c =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    return c.LesionList.Select(u =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var clone = c.Clone();
 | 
				
			||||||
 | 
					                        clone.LessionCode = u.LessionCode;
 | 
				
			||||||
 | 
					                        clone.LessionType = u.LessionType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        clone.IsLymph = u.IsLymph;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        clone.LessionLocation = u.LessionLocation;
 | 
				
			||||||
 | 
					                        clone.LessionOrgan = u.LessionOrgan;
 | 
				
			||||||
 | 
					                        clone.BodyPartDescription = u.BodyPartDescription;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        //clone.MeasurementResult = u.MeasurementResult;
 | 
				
			||||||
 | 
					                        clone.LongDiameter = u.LongDiameter;
 | 
				
			||||||
 | 
					                        clone.ShortDiameter = u.ShortDiameter;
 | 
				
			||||||
 | 
					                        clone.LessionState = u.LessionState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        return clone;
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                }).ToList();
 | 
				
			||||||
 | 
					                exportInfo.List = exportList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1DetailedOfEvaluatedLesionExport), criterionType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new Exception("当前标准导出还未支持");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -117,6 +117,8 @@ namespace IRaCIS.Core.Application.ViewModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string Code { get; set; } = string.Empty;
 | 
					        public string Code { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Guid? TrialReadingCriterionId { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Guid TrialId { get; set; }
 | 
					        public Guid TrialId { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string AuthorizationCode { get; set; } = string.Empty;
 | 
					        public string AuthorizationCode { get; set; } = string.Empty;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -587,7 +587,7 @@ namespace IRaCIS.Core.Application.Contracts
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public class SelftAnalysisExport
 | 
					    public class AnalysisExortCommon
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public Guid Id { get; set; }
 | 
					        public Guid Id { get; set; }
 | 
				
			||||||
        public string TaskName { get; set; }
 | 
					        public string TaskName { get; set; }
 | 
				
			||||||
| 
						 | 
					@ -596,12 +596,6 @@ namespace IRaCIS.Core.Application.Contracts
 | 
				
			||||||
        public decimal VisitTaskNum { get; set; }
 | 
					        public decimal VisitTaskNum { get; set; }
 | 
				
			||||||
        public bool? IsSelfAnalysis { get; set; }
 | 
					        public bool? IsSelfAnalysis { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //自身一致性分析任务特有
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [DictionaryTranslateAttribute("YesOrNo")]
 | 
					 | 
				
			||||||
        public bool? IsAnalysisDiffToOriginalData { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public string TrialReadingCriterionName { get; set; }
 | 
					        public string TrialReadingCriterionName { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public CriterionType CriterionType { get; set; }
 | 
					        public CriterionType CriterionType { get; set; }
 | 
				
			||||||
| 
						 | 
					@ -614,12 +608,12 @@ namespace IRaCIS.Core.Application.Contracts
 | 
				
			||||||
        public Arm ArmEnum { get; set; }
 | 
					        public Arm ArmEnum { get; set; }
 | 
				
			||||||
        public string UserName { get; set; }
 | 
					        public string UserName { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   
 | 
					
 | 
				
			||||||
   
 | 
					
 | 
				
			||||||
        public bool IsBaseline { get; set; }
 | 
					        public bool IsBaseline { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [DictionaryTranslateAttribute("ExistDisease", nameof(SelftAnalysisExport.IsBaseline),"true")]
 | 
					        [DictionaryTranslateAttribute("ExistDisease", nameof(SelftAnalysisExport.IsBaseline), "true")]
 | 
				
			||||||
        [DictionaryTranslateAttribute("OverallAssessment", nameof(SelftAnalysisExport.IsBaseline), "false")]
 | 
					        [DictionaryTranslateAttribute("OverallAssessment", nameof(SelftAnalysisExport.IsBaseline), "false")]
 | 
				
			||||||
        public string EvaluateResult { get; set; }
 | 
					        public string EvaluateResult { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -628,6 +622,21 @@ namespace IRaCIS.Core.Application.Contracts
 | 
				
			||||||
        public string AgainEvaluateResult { get; set; } = String.Empty;
 | 
					        public string AgainEvaluateResult { get; set; } = String.Empty;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class GroupAnalysisExport: AnalysisExortCommon
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class SelftAnalysisExport: AnalysisExortCommon
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //自身一致性分析任务特有
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [DictionaryTranslateAttribute("YesOrNo")]
 | 
				
			||||||
 | 
					        public bool? IsAnalysisDiffToOriginalData { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public class OverallTumorEvaluationExport
 | 
					    public class OverallTumorEvaluationExport
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public String TrialSiteCode { get; set; } = String.Empty;
 | 
					        public String TrialSiteCode { get; set; } = String.Empty;
 | 
				
			||||||
| 
						 | 
					@ -695,7 +704,7 @@ namespace IRaCIS.Core.Application.Contracts
 | 
				
			||||||
        //病灶编号
 | 
					        //病灶编号
 | 
				
			||||||
        public string LessionCode { get; set; }
 | 
					        public string LessionCode { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        [DictionaryTranslateAttribute("LesionType")]
 | 
					        [DictionaryTranslateAttribute("LesionType")]
 | 
				
			||||||
        //病灶类型
 | 
					        //病灶类型
 | 
				
			||||||
        public string LessionType { get; set; }
 | 
					        public string LessionType { get; set; }
 | 
				
			||||||
| 
						 | 
					@ -725,7 +734,7 @@ namespace IRaCIS.Core.Application.Contracts
 | 
				
			||||||
        //短径
 | 
					        //短径
 | 
				
			||||||
        public string ShortDiameter { get; set; }
 | 
					        public string ShortDiameter { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [DictionaryTranslateAttribute("TargetState")] 
 | 
					        [DictionaryTranslateAttribute("TargetState")]
 | 
				
			||||||
        //病灶状态
 | 
					        //病灶状态
 | 
				
			||||||
        public string LessionState { get; set; }
 | 
					        public string LessionState { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,758 +40,6 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #region 导表查询
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 影像上传列表    只导出已上传状态的访视记录
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="visitSearchDTO"></param>
 | 
					 | 
				
			||||||
        /// <param name="_commonDocumentRepository"></param>
 | 
					 | 
				
			||||||
        /// <param name="_dictionaryService"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        [AllowAnonymous]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> CRCVisitListExport(CRCVisitSearchDTO visitSearchDTO,
 | 
					 | 
				
			||||||
            [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
            [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var svExpression = QCCommon.GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId)
 | 
					 | 
				
			||||||
                       .Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true)
 | 
					 | 
				
			||||||
                       .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId)
 | 
					 | 
				
			||||||
                       .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId)
 | 
					 | 
				
			||||||
                       .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                       .WhereIf(visitSearchDTO.VisitPlanArray != null && visitSearchDTO.VisitPlanArray?.Length > 0, svExpression)
 | 
					 | 
				
			||||||
                       //.WhereIf(!string.IsNullOrEmpty(visitSearchDTO.VisitPlanInfo), visitSearchDTO.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(visitSearchDTO.VisitPlanInfo))
 | 
					 | 
				
			||||||
                       .WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState))
 | 
					 | 
				
			||||||
                       .WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState)
 | 
					 | 
				
			||||||
                       .WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState)
 | 
					 | 
				
			||||||
                       .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent)
 | 
					 | 
				
			||||||
                       .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
					 | 
				
			||||||
                       .ProjectTo<CRCVisitExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.BlindName).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == visitSearchDTO.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialCRCUploadImageList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CRCVisitExportDTO));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        ///  质疑列表   
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="challengeQuery"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        [AllowAnonymous]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetQCChallengeList_Export(ChallengeQuery challengeQuery,
 | 
					 | 
				
			||||||
             [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
            [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var svExpression = QCCommon.GetQCChallengeFilter(challengeQuery.VisitPlanArray);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId)
 | 
					 | 
				
			||||||
                //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum)
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed)
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId)
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.SubjectId != null, t => t.SubjectVisit.SubjectId == challengeQuery.SubjectId)
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.CreateUserId != null, t => t.CreateUserId == challengeQuery.CreateUserId)
 | 
					 | 
				
			||||||
                .WhereIf(!string.IsNullOrEmpty(challengeQuery.SubjectCode), t => t.SubjectVisit.Subject.Code.Contains(challengeQuery.SubjectCode))
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.VisitPlanArray != null && challengeQuery.VisitPlanArray?.Length > 0, svExpression)
 | 
					 | 
				
			||||||
                //.WhereIf(!string.IsNullOrEmpty(challengeQuery.VisitPlanInfo), challengeQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.InPlan == false : t => t.SubjectVisit.VisitNum == decimal.Parse(challengeQuery.VisitPlanInfo))
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.IsUrgent != null, t => t.SubjectVisit.IsUrgent == challengeQuery.IsUrgent)
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.IsOverTime != null && challengeQuery.IsOverTime==true, t => t.IsClosed ? t.ClosedTime > t.DeadlineTime : DateTime.Now > t.DeadlineTime)
 | 
					 | 
				
			||||||
                .WhereIf(challengeQuery.IsOverTime != null && challengeQuery.IsOverTime == false, t => t.IsClosed ? t.ClosedTime < t.DeadlineTime : DateTime.Now < t.DeadlineTime)
 | 
					 | 
				
			||||||
                .ProjectTo<QCChanllengeExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.ChallengeCode).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == challengeQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialQCImageChanllengeList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCChanllengeExportDto));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 受试者信息导出表
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="param"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetSubjectList_Export(SubjectQueryParam param,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _repository.Where<Subject>(u => u.TrialId == param.TrialId)
 | 
					 | 
				
			||||||
                  .WhereIf(!string.IsNullOrWhiteSpace(param.Code), t => t.Code.Contains(param.Code))
 | 
					 | 
				
			||||||
                  .WhereIf(!string.IsNullOrWhiteSpace(param.Name), t => t.ShortName.Contains(param.Name))
 | 
					 | 
				
			||||||
                  .WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex))
 | 
					 | 
				
			||||||
                  .WhereIf(param.Status != null, t => t.Status == param.Status)
 | 
					 | 
				
			||||||
                  .WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId)
 | 
					 | 
				
			||||||
                  // CRC  只负责他管理site的受试者
 | 
					 | 
				
			||||||
                  .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
					 | 
				
			||||||
                  .ProjectTo<SubjectExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.Code).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectExportDTO));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 受试者 阅片期 进度表 导出
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="param"></param>
 | 
					 | 
				
			||||||
        /// <param name="_commonDocumentRepository"></param>
 | 
					 | 
				
			||||||
        /// <param name="_dictionaryService"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetSubjectReadingPeriod_Export(GetReadModuleDto dto,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _repository.Where<Subject>(u => u.TrialId == dto.TrialId)
 | 
					 | 
				
			||||||
                    .WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
 | 
					 | 
				
			||||||
                    .WhereIf(dto.TrialSiteCode != null && dto.TrialSiteCode != string.Empty, x => x.TrialSite.TrialSiteCode == dto.TrialSiteCode)
 | 
					 | 
				
			||||||
                    .WhereIf(dto.SubjectCode != null && dto.SubjectCode != string.Empty, x => x.Code == dto.SubjectCode)
 | 
					 | 
				
			||||||
                    //.WhereIf(dto.ReadingStatus != null, x => x.ReadingStatus == dto.ReadingStatus)
 | 
					 | 
				
			||||||
                 
 | 
					 | 
				
			||||||
                    .ProjectTo<SubjectExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.Code).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == dto.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectExportDTO));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 阅片期信息表
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="param"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetReadingPeriodList_Export(ReadPeriodQuery param,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _repository.Where<ReadModule>(u => u.TrialId == param.TrialId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  .ProjectTo<ReadPeriodExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectReadingPeriodList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadPeriodExportDto));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 一致性核查  检查信息表
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="studyQuery"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetDicomAndNoneDicomStudyList_Export(StudyQuery studyQuery,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var svExpression = QCCommon.GetDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var dicomStudyQuery = _repository.Where<DicomStudy>(t => t.TrialId == studyQuery.TrialId)
 | 
					 | 
				
			||||||
                    .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
					 | 
				
			||||||
                      .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression)
 | 
					 | 
				
			||||||
                    .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
 | 
					 | 
				
			||||||
                    .Select(t => new UnionStudyExportDTO()
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        VisitName = t.SubjectVisit.VisitName,
 | 
					 | 
				
			||||||
                        VisitNum = t.SubjectVisit.VisitNum,
 | 
					 | 
				
			||||||
                        IsDicom = true,
 | 
					 | 
				
			||||||
                        SubjectCode = t.Subject.Code,
 | 
					 | 
				
			||||||
                        Modality = t.Modalities,
 | 
					 | 
				
			||||||
                        StudyCode = t.StudyCode,
 | 
					 | 
				
			||||||
                        StudyTime = t.StudyTime,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        TrialSiteCode = t.TrialSite.TrialSiteCode,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        CheckState = t.SubjectVisit.CheckState,
 | 
					 | 
				
			||||||
                        //Uploader = t.Uploader.UserName,
 | 
					 | 
				
			||||||
                        //UploadTime = t.CreateTime
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var svExpression2 = QCCommon.GetNoneDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var nodeDicomStudyQuery = _repository.Where<NoneDicomStudy>(t => t.TrialId == studyQuery.TrialId)
 | 
					 | 
				
			||||||
                .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
					 | 
				
			||||||
                 .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression2)
 | 
					 | 
				
			||||||
                 .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                 .Select(t => new UnionStudyExportDTO()
 | 
					 | 
				
			||||||
                 {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                     VisitName = t.SubjectVisit.VisitName,
 | 
					 | 
				
			||||||
                     VisitNum = t.SubjectVisit.VisitNum,
 | 
					 | 
				
			||||||
                     IsDicom = false,
 | 
					 | 
				
			||||||
                     SubjectCode = t.Subject.Code,
 | 
					 | 
				
			||||||
                     Modality = t.Modality,
 | 
					 | 
				
			||||||
                     StudyCode = t.StudyCode,
 | 
					 | 
				
			||||||
                     StudyTime = t.ImageDate,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                     TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                     TrialSiteCode = t.TrialSite.TrialSiteCode,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                     CheckState = t.SubjectVisit.CheckState,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                     //Uploader = t.CreateUser.UserName,
 | 
					 | 
				
			||||||
                     //UploadTime = t.CreateTime
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                 });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await dicomStudyQuery.Union(nodeDicomStudyQuery)
 | 
					 | 
				
			||||||
              .ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == studyQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialStudyList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(UnionStudyExportDTO));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 一致性核查记录表  
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="checkQuery"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetConsistencyVerificationList_Export(CheckQuery checkQuery,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var svExpression = QCCommon.GetSubjectVisitFilter(checkQuery.VisitPlanArray);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _subjectVisitRepository.Where(x => x.TrialId == checkQuery.TrialId)
 | 
					 | 
				
			||||||
                        .Where(x => x.AuditState == AuditStateEnum.QCPassed) //一致性核查中的,或者还没一致性核查的                                                                                                                 
 | 
					 | 
				
			||||||
                        .WhereIf(checkQuery.CheckState != null, t => t.CheckState == checkQuery.CheckState)
 | 
					 | 
				
			||||||
                        .WhereIf(checkQuery.SiteId != null, t => t.SiteId == checkQuery.SiteId)
 | 
					 | 
				
			||||||
                        .WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
 | 
					 | 
				
			||||||
                        .WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression)
 | 
					 | 
				
			||||||
                        .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//CRC 过滤负责的site
 | 
					 | 
				
			||||||
                        .ProjectTo<PMKCheckEXportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == checkQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectVisitCheckList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PMKCheckEXportDTO));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// PM阅片跟踪
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetReadingTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var list = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false)
 | 
					 | 
				
			||||||
                //.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode) || t.BlindSubjectCode.Contains(queryVisitTask.SubjectCode))
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
					 | 
				
			||||||
               .ProjectTo<ReadingTaskExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId), nameof(VisitTask.VisitTaskNum) };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReadingTaskList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadingTaskExportDto));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// PM 重阅追踪 
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetReReadingTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _repository.Where<VisitTaskReReading>(t => t.OriginalReReadingTask.TrialId == queryVisitTask.TrialId /*&& t.OriginalReReadingTask.IsAnalysisCreate == false*/)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId)
 | 
					 | 
				
			||||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!))
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.TaskState != null, t => t.OriginalReReadingTask.TaskState == queryVisitTask.TaskState)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.OriginalReReadingTask.ReReadingApplyState == queryVisitTask.ReReadingApplyState)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.SubjectId != null, t => t.OriginalReReadingTask.SubjectId == queryVisitTask.SubjectId)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.IsUrgent != null, t => t.OriginalReReadingTask.IsUrgent == queryVisitTask.IsUrgent)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.DoctorUserId != null, t => t.OriginalReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.OriginalReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.OriginalReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
					 | 
				
			||||||
                 .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.OriginalReReadingTask.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                 .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.OriginalReReadingTask.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate) || (t.OriginalReReadingTask.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.OriginalReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
					 | 
				
			||||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode) || t.OriginalReReadingTask.BlindSubjectCode.Contains(queryVisitTask.SubjectCode))
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
					 | 
				
			||||||
                .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
					 | 
				
			||||||
                .ProjectTo<ReReadingTaskExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //var defalutSortArray = new string[] { nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.IsUrgent) + " desc", nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.SubjectId), nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.VisitTaskNum) };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReReadingTaskList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReReadingTaskExportDto));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// PM  医学审核(挑选任务生成后的列表)
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="inQuery"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetMedicalReviewTaskList_Export(TaskMedicalReviewQuery inQuery,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _repository.Where<TaskMedicalReview>(t => t.VisitTask.TrialId == inQuery.TrialId)
 | 
					 | 
				
			||||||
                             .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId)
 | 
					 | 
				
			||||||
                             .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId)
 | 
					 | 
				
			||||||
                             .WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode))
 | 
					 | 
				
			||||||
                             .WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.VisitTask.TaskName.Contains(inQuery.TaskName) || t.VisitTask.TaskBlindName.Contains(inQuery.TaskName))
 | 
					 | 
				
			||||||
                             .WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
 | 
					 | 
				
			||||||
                             .WhereIf(inQuery.DoctorUserId != null, t => t.VisitTask.DoctorUserId == inQuery.DoctorUserId)
 | 
					 | 
				
			||||||
                             .WhereIf(!string.IsNullOrEmpty(inQuery.TrialSiteCode), t => (t.VisitTask.BlindTrialSiteCode.Contains(inQuery.TrialSiteCode) && t.VisitTask.IsAnalysisCreate) || (t.VisitTask.Subject.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode) && t.VisitTask.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
                             .WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory)
 | 
					 | 
				
			||||||
                             .WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                               .WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
                             .ProjectTo<TaskMedicalReviewExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TaskMedicalReviewExportDto));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 自身一致性分析
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetSelfAnalysisTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //产生一致性分析的Subject
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          var subjectQuerybal=  _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == true).Select(t => t.SubjectId).Distinct();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var allList = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit)
 | 
					 | 
				
			||||||
                .Where(t => t.IsSelfAnalysis == true || t.IsSelfAnalysis == null) //一致性分析的结果 + 正常任务的结果 + 仅仅访视的结果
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
					 | 
				
			||||||
              
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
					 | 
				
			||||||
               .ProjectTo<SelftAnalysisExport>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
             
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = allList.Where(t => t.IsSelfAnalysis == null).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //To do 根据任务Id  找对评估结果,这里需要考虑标准  以及对应的翻译
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //基线和访视的评估结果翻译枚举 分别对应着
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            foreach (var item in list)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                //找到一致性分析的结果
 | 
					 | 
				
			||||||
                var selfAnalysisTask = allList.Where(t => t.IsSelfAnalysis == true && t.SubjectCode == item.SubjectCode && t.VisitTaskNum == item.VisitTaskNum && t.TaskName == t.TaskName).FirstOrDefault();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //因为基线的评估结果是 是否存在疾病 而 其他访视的结果是 整体肿瘤评估结果 是用不同的枚举翻译的 所以这里手动翻译 不把翻译逻辑耦合到通用的翻译代码里面 在此特殊处理
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                item.AgainEvaluateResult = selfAnalysisTask?.EvaluateResult ?? String.Empty ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //将自身一致性分析的字段 赋值到访视任务这个字段
 | 
					 | 
				
			||||||
                item.IsAnalysisDiffToOriginalData = selfAnalysisTask.IsAnalysisDiffToOriginalData;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SelftAnalysisExport));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 组件一致性分析
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="inQuery"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetGroupAnalysisTaskList_Export(VisitTaskQuery queryVisitTask,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //产生组间一致性分析的Subject
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var subjectQuerybal = _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == false).Select(t => t.SubjectId).Distinct();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var allList = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) &&t.ReadingCategory==ReadingCategory.Visit)
 | 
					 | 
				
			||||||
                .Where(t => t.IsSelfAnalysis == false || t.IsSelfAnalysis == null) //一致性分析的结果 + 正常任务的结果 +仅仅访视的结果
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
					 | 
				
			||||||
               .ProjectTo<SelftAnalysisExport>(_mapper.ConfigurationProvider).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = allList.Where(t => t.IsSelfAnalysis == null).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitTaskNum).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //To do 根据任务Id  找对评估结果,这里需要考虑标准  以及对应的翻译
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            foreach (var item in list)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                //找到一致性分析的结果
 | 
					 | 
				
			||||||
                var origenalTask = allList.Where(t => t.IsSelfAnalysis == false && t.SubjectCode == item.SubjectCode && t.VisitTaskNum == item.VisitTaskNum && t.TaskName == t.TaskName).FirstOrDefault();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                item.AgainEvaluateResult = origenalTask?.EvaluateResult ?? String.Empty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TaskMedicalReviewExportDto));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 整体肿瘤评估   多个标准一个接口   Excel 列是一样的
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetOverallTumorEvaluationList_Export(VisitTaskQuery queryVisitTask,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //每次查询必须是单标准的
 | 
					 | 
				
			||||||
            var criterionType = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var list = await _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate==false && t.ReadingTaskState==ReadingTaskState.HaveSigned)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
					 | 
				
			||||||
               .ProjectTo<OverallTumorEvaluationExport>(_mapper.ConfigurationProvider,new { criterionType = criterionType }).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
         
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(OverallTumorEvaluationExport), criterionType);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        ///  肿瘤疗效评估表   ( 目前 RECIST1.1)
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetEvaluationOfTumorEfficacy_Export(VisitTaskQuery queryVisitTask,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //每次查询必须是单标准的
 | 
					 | 
				
			||||||
            var criterionType = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var query = _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (criterionType == CriterionType.RECIST1Pointt1)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                var list = await query.ProjectTo<RECIST1Point1EvaluationOfTumorEfficacyExport>(_mapper.ConfigurationProvider, new { criterionType = criterionType }).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                exportInfo.List = list;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1EvaluationOfTumorEfficacyExport), criterionType);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            else
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                throw new Exception("当前标准导出还未支持");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 评估病灶明细表   ( 目前 RECIST1.1  PGW3 表都是不同的)
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="queryVisitTask"></param>
 | 
					 | 
				
			||||||
        /// <returns></returns>
 | 
					 | 
				
			||||||
        [HttpPost]
 | 
					 | 
				
			||||||
        public async Task<IActionResult> GetDetailedOfEvaluatedLesion_Export(VisitTaskQuery queryVisitTask,
 | 
					 | 
				
			||||||
                [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
 | 
					 | 
				
			||||||
                [FromServices] IDictionaryService _dictionaryService)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //每次查询必须是单标准的
 | 
					 | 
				
			||||||
            var criterionType = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var query = _repository.Where<VisitTask>(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
					 | 
				
			||||||
               //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum)
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
					 | 
				
			||||||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
					 | 
				
			||||||
               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (criterionType == CriterionType.RECIST1Pointt1)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                var list = await query.ProjectTo<RECIST1Point1DetailedOfEvaluatedLesionExport>(_mapper.ConfigurationProvider, new { criterionType = criterionType, isEn_Us=_userInfo.IsEn_Us }).ToListAsync();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                var exportList = list.SelectMany(c =>
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    return c.LesionList.Select(u =>
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        var clone = c.Clone();
 | 
					 | 
				
			||||||
                        clone.LessionCode = u.LessionCode;
 | 
					 | 
				
			||||||
                        clone.LessionType = u.LessionType;
 | 
					 | 
				
			||||||
                       
 | 
					 | 
				
			||||||
                        clone.IsLymph = u.IsLymph;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        clone.LessionLocation = u.LessionLocation;
 | 
					 | 
				
			||||||
                        clone.LessionOrgan = u.LessionOrgan;
 | 
					 | 
				
			||||||
                        clone.BodyPartDescription = u.BodyPartDescription;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        //clone.MeasurementResult = u.MeasurementResult;
 | 
					 | 
				
			||||||
                        clone.LongDiameter = u.LongDiameter;
 | 
					 | 
				
			||||||
                        clone.ShortDiameter = u.ShortDiameter;
 | 
					 | 
				
			||||||
                        clone.LessionState = u.LessionState;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        return clone;
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                }).ToList();
 | 
					 | 
				
			||||||
                exportInfo.List = exportList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1DetailedOfEvaluatedLesionExport), criterionType);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            else
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                throw new Exception("当前标准导出还未支持");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #region CRC上传、质疑页面
 | 
					        #region CRC上传、质疑页面
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -127,7 +127,7 @@ namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
                .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code));
 | 
					                .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CreateMap<VisitTask, SelftAnalysisExport>()
 | 
					            CreateMap<VisitTask, AnalysisExortCommon>()
 | 
				
			||||||
                .ForMember(o => o.TrialReadingCriterionName, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionName))
 | 
					                .ForMember(o => o.TrialReadingCriterionName, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionName))
 | 
				
			||||||
                .ForMember(o => o.CriterionType, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionType))
 | 
					                .ForMember(o => o.CriterionType, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionType))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,7 +139,11 @@ namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
                                                     : u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstOrDefault().Answer  ))
 | 
					                                                     : u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstOrDefault().Answer  ))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName));
 | 
					                .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName));
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
 | 
					            CreateMap<VisitTask, GroupAnalysisExport>().IncludeBase<VisitTask, AnalysisExortCommon>();
 | 
				
			||||||
 | 
					            CreateMap<VisitTask, SelftAnalysisExport>().IncludeBase<VisitTask, AnalysisExortCommon>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CriterionType? criterionType = null;
 | 
					            CriterionType? criterionType = null;
 | 
				
			||||||
            CreateMap<VisitTask, OverallTumorEvaluationExport>()
 | 
					            CreateMap<VisitTask, OverallTumorEvaluationExport>()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue