diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index e2b0eea08..efa735ed7 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -688,6 +688,35 @@ + + + 质控问题答案导出 + + + + + + + + + + 医学审核问题导表 + + + + + + + + + 访视影像统计 + + + + + + + 项目参与人员导出 @@ -966,16 +995,6 @@ - - - 质控问题答案导出 - - - - - - - ExploreRecommendService diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 6d7e499b6..ccdae5dfa 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -213,7 +213,7 @@ namespace IRaCIS.Core.Application.Service //为防止脏数据 这里也多判断一次 var existCurrentVisitTaskList = _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.TaskState == TaskState.Effect - && t.SourceSubjectVisitId == subjectVisit.Id).ToList(); + && t.SourceSubjectVisitId == subjectVisit.Id && t.IsAnalysisCreate == false).ToList(); if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Double) { @@ -682,7 +682,7 @@ namespace IRaCIS.Core.Application.Service var existCurrentVisitTaskList = _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect - /* && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null*/ && t.SourceSubjectVisitId == subjectVisit.Id).ToList(); + /* && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null*/ && t.SourceSubjectVisitId == subjectVisit.Id && t.IsAnalysisCreate == false).ToList(); VisitTask? task1 = existCurrentVisitTaskList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm1); VisitTask? task2 = existCurrentVisitTaskList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm2); @@ -1084,7 +1084,7 @@ namespace IRaCIS.Core.Application.Service //该Subject 之前是否有已分配的 如果改变配置 可能会出现 一个Subject 分配的同一个医生 有的在Arm1 有的在Arm2 - var allocateSubjectArmList = _visitTaskRepository.Where(t => t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialId == trialId && t.DoctorUserId != null && t.ArmEnum != Arm.JudgeArm) + var allocateSubjectArmList = _visitTaskRepository.Where(t => t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialId == trialId && t.DoctorUserId != null && t.ArmEnum != Arm.JudgeArm && t.IsAnalysisCreate == false) .Select(t => new { t.DoctorUserId, t.ArmEnum }).Distinct().ToList(); //不是初次分配 @@ -1105,7 +1105,7 @@ namespace IRaCIS.Core.Application.Service if (trialReadingCriterionConfig.IsReadingTaskViewInOrder == ReadingOrder.InOrder) { //之前有回退到影像上传的访视 那么当前访视一致性核查通过的时候,当前访视生成但是不分配出去(排除失访的) - var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); + var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false && t.IsAnalysisCreate == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); if (beforeBackVisitTask == null) @@ -1130,7 +1130,7 @@ namespace IRaCIS.Core.Application.Service #endregion - var followBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.VisitTaskNum > subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); + var followBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.VisitTaskNum > subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false && t.IsAnalysisCreate == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); //存在退回访视1 又退回基线 这种情况 生成任务 考虑基线先一致性核查通过,但是访视1还未通过时 生成任务 var followVisitTaskList = await _visitTaskRepository diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 0b00ab56f..f0f4370d7 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -48,7 +48,179 @@ namespace IRaCIS.Core.Application.Service.Common IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IWebHostEnvironment _hostEnvironment) : BaseService { + /// + /// 质控问题答案导出 + /// + /// + /// + /// + /// + /// + [HttpPost] + public async Task GetTrialQCQuestionAnserList_Export(Guid trialId, + [FromServices] IRepository _trialQCQuestionAnswerRepository, + [FromServices] IRepository _trialRepository, + [FromServices] IRepository _userRoleRepository, + [FromServices] IRepository _trialQCQuestionRepository, + [FromServices] IDictionaryService _dictionaryService) + { + //var query = from sv in _subjectVisitRepository.Where(t => t.TrialId == trialId && t.AuditState == AuditStateEnum.QCPassed) + // join u in _userRoleRepository.AsQueryable() on sv.UpdateUserId equals u.Id + // select new QCQuestionReusult_export() + // { + // TrialSiteCode = sv.TrialSite.TrialSiteCode, + // SubjectCode = sv.Subject.Code, + // VisitName = sv.VisitName, + // SubjectVisitId = sv.Id, + + // CurrentQCEnum = qa.CurrentQCEnum, + // AuditTime = qa.UpdateTime, + // SecondReviewTime = qa.SecondReviewTime, + // AuditUserName = u.UserName, + // AuditUserFullName = u.FullName, + // QuesitonName = qa.TrialQCQuestionConfigure.QuestionName, + + // ShowOrder = qa.TrialQCQuestionConfigure.ShowOrder, + // Answer = qa.Answer + + // } + + + var query = from qa in _trialQCQuestionAnswerRepository.Where(t => t.SubjectVisit.TrialId == trialId && + (t.SubjectVisit.AuditState == AuditStateEnum.QCPassed || + (t.SubjectVisit.SecondReviewState == SecondReviewState.AuditPassed && t.SecondReviewTime <= t.SubjectVisit.Trial.QCQuestionConfirmedTime) || + (t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit && t.SecondReviewTime < t.SubjectVisit.Trial.QCQuestionConfirmedTime))) + join u in _userRoleRepository.AsQueryable() on qa.UpdateUserId equals u.Id + select new QCQuestionAnswerResult_export() + { + SubjectVisitId = qa.SubjectVisitId, + SecondReviewTime = qa.SecondReviewTime, + + VisitNum = qa.SubjectVisit.VisitNum, + + TrialSiteCode = qa.SubjectVisit.TrialSite.TrialSiteCode, + SubjectCode = qa.SubjectVisit.Subject.Code, + VisitName = qa.SubjectVisit.VisitName, + CurrentQCEnum = qa.CurrentQCEnum, + + AuditTime = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditTime : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditTime : qa.UpdateTime), + AuditUserName = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditUser.UserName : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditUser.UserName : u.UserName), + AuditUserFullName = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditUser.FullName : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditUser.FullName : u.FullName), + + QuestionId = qa.TrialQCQuestionConfigure.Id, + QuesitonName = qa.TrialQCQuestionConfigure.QuestionName, + ShowOrder = qa.TrialQCQuestionConfigure.ShowOrder, + Answer = qa.Answer, + + + }; + + var result = query.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList(); + + var list = result.GroupBy(t => new { t.SubjectVisitId, t.SecondReviewTime, t.TrialSiteCode, t.VisitNum, t.SubjectCode, t.VisitName, t.CurrentQCEnum }) + .Select(g => new QCQuestionResult_Export() + { + TrialSiteCode = g.Key.TrialSiteCode, + SubjectCode = g.Key.SubjectCode, + VisitName = g.Key.VisitName, + CurrentQCEnum = g.Key.CurrentQCEnum, + VisitNum = g.Key.VisitNum, + + AuditTime = g.Select(t => t.AuditTime).First(), + AuditUserName = g.Select(t => t.AuditUserName).First(), + AuditUserFullName = g.Select(t => t.AuditUserFullName).First(), + + QuestionAnswerList = g.Select(t => new QCQuestionAnswerExport() { Answer = t.Answer, QuestionName = t.QuesitonName, ShowOrder = t.ShowOrder, QuestionId = t.QuestionId }).OrderBy(t => t.ShowOrder).ToList() + + + }).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList(); + + + var exportInfo = new ExcelExportInfo(); + + exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + + + var columNameList = _trialQCQuestionRepository.Where(t => t.TrialId == trialId).OrderBy(t => t.ShowOrder).Select(t => new { t.QuestionName, t.Id }).ToList(); + + + var dynamicColumnConfig = new DynamicColumnConfig() + { + AutoColumnTitleRowIndex = 2, + AutoColumnStartIndex = 7, + TempalteLastColumnIndex = 6, + DynamicItemDicName = "TranslateDicName", + DynamicItemValueName = "Answer", + DynamicItemTitleName = "QuestionName", + DynamicListName = "QuestionAnswerList", + DynamicItemTitleId = "QuestionId", + RemoveColunmIndexList = new List() { }, + ColumnIdNameList = columNameList.Select(t => new DynamicColumnConfig.ColumItem() { Id = t.Id, Name = t.QuestionName }).ToList(), + TranslateDicNameList = new List() + }; + + + var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(StaticData.Export.TrialQCResult_Export, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCQuestionResult_Export), dynamicColumnConfig: dynamicColumnConfig); + + return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") + { + FileDownloadName = $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}_{fileName}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" + }; + } + + /// + /// 医学审核问题导表 + /// + /// + /// + /// + /// + [HttpPost] + public async Task GetReadingMedicineSystemQuestionList_Export(ReadingMedicineSystemQuestionQuery inDto, + [FromServices] IRepository _readingMedicineSystemQuestionRepository, + [FromServices] IDictionaryService _dictionaryService) + { + //避免前端遍历 + var criterionEnum = inDto.TrialReadingCriterionId != null ? _readingQuestionCriterionTrialRepository.Where(t => t.Id == inDto.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefault() : CriterionType.NoCriterion; + + var query = _readingMedicineSystemQuestionRepository.AsQueryable() + .WhereIf(!inDto.TypeValue.IsNullOrEmpty(), x => x.TypeValue.Contains(inDto.TypeValue)) + .WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue)) + .WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName)) + .WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type)) + .WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory) + .WhereIf(inDto.CurrentCriterionType != null, x => x.CriterionTypeEnum == null || x.CriterionTypeEnum == inDto.CurrentCriterionType) + .WhereIf(inDto.CriterionTypeEnum != null, x => x.CriterionTypeEnum == inDto.CriterionTypeEnum) + .WhereIf(inDto.TrialReadingCriterionId != null, x => x.CriterionTypeEnum == criterionEnum || x.IsGeneral == true) + .WhereIf(inDto.IsGeneral != null, x => x.IsGeneral == inDto.IsGeneral) + .WhereIf(inDto.LanguageType != null, x => x.LanguageType == inDto.LanguageType!.Value) + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder); + + var defalutSortArray = new string[] { nameof(ReadingMedicineSystemQuestionView.LanguageType) + " desc", nameof(ReadingMedicineSystemQuestionView.ShowOrder) }; + + + var list = await query.SortToListAsync(inDto); + + var exportInfo = new ExcelExportInfo(); + + exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + + return await ExcelExportHelper.DataExportAsync(StaticData.Export.SystenMedicalQCQuestionsList_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadingMedicineSystemQuestionView)); + + } + + + /// + /// 访视影像统计 + /// + /// + /// + /// + /// + /// [HttpPost] public async Task GetTrialVisitImageStatList_Export(TrialVisitImageQuery inQuery, [FromServices] IRepository _subjectVisitRepository, @@ -97,7 +269,6 @@ namespace IRaCIS.Core.Application.Service.Common } - #region 后续需要移动过来 @@ -391,7 +562,6 @@ namespace IRaCIS.Core.Application.Service.Common } - #endregion @@ -1810,7 +1980,7 @@ namespace IRaCIS.Core.Application.Service.Common return await ExcelExportHelper.DataExportAsync(StaticData.Export.EmailNoticeConfig_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(EmailNoticeConfigExportDto)); } - + #endregion #region 导表公用 @@ -2136,7 +2306,7 @@ namespace IRaCIS.Core.Application.Service.Common #endregion - #endregion + #region 通用阅片结果导出 @@ -3034,7 +3204,7 @@ namespace IRaCIS.Core.Application.Service.Common else { - if (criterion.CriterionType == CriterionType.SelfDefine) + if (criterion.CriterionGroup == CriterionGroup.Nontumorous) { //最终EXCEL 列 var configCoumNameList = new List(); @@ -3633,126 +3803,6 @@ namespace IRaCIS.Core.Application.Service.Common #endregion - /// - /// 质控问题答案导出 - /// - /// - /// - /// - /// - /// - [HttpPost] - public async Task GetTrialQCQuestionAnserList_Export(Guid trialId, - [FromServices] IRepository _trialQCQuestionAnswerRepository, - [FromServices] IRepository _trialRepository, - [FromServices] IRepository _userRoleRepository, - [FromServices] IRepository _trialQCQuestionRepository, - [FromServices] IDictionaryService _dictionaryService) - { - //var query = from sv in _subjectVisitRepository.Where(t => t.TrialId == trialId && t.AuditState == AuditStateEnum.QCPassed) - // join u in _userRoleRepository.AsQueryable() on sv.UpdateUserId equals u.Id - // select new QCQuestionReusult_export() - // { - // TrialSiteCode = sv.TrialSite.TrialSiteCode, - // SubjectCode = sv.Subject.Code, - // VisitName = sv.VisitName, - // SubjectVisitId = sv.Id, - - // CurrentQCEnum = qa.CurrentQCEnum, - // AuditTime = qa.UpdateTime, - // SecondReviewTime = qa.SecondReviewTime, - // AuditUserName = u.UserName, - // AuditUserFullName = u.FullName, - // QuesitonName = qa.TrialQCQuestionConfigure.QuestionName, - - // ShowOrder = qa.TrialQCQuestionConfigure.ShowOrder, - // Answer = qa.Answer - - // } - - - var query = from qa in _trialQCQuestionAnswerRepository.Where(t => t.SubjectVisit.TrialId == trialId && - (t.SubjectVisit.AuditState == AuditStateEnum.QCPassed || - (t.SubjectVisit.SecondReviewState == SecondReviewState.AuditPassed && t.SecondReviewTime <= t.SubjectVisit.Trial.QCQuestionConfirmedTime) || - (t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit && t.SecondReviewTime < t.SubjectVisit.Trial.QCQuestionConfirmedTime))) - join u in _userRoleRepository.AsQueryable() on qa.UpdateUserId equals u.Id - select new QCQuestionAnswerResult_export() - { - SubjectVisitId = qa.SubjectVisitId, - SecondReviewTime = qa.SecondReviewTime, - - VisitNum = qa.SubjectVisit.VisitNum, - - TrialSiteCode = qa.SubjectVisit.TrialSite.TrialSiteCode, - SubjectCode = qa.SubjectVisit.Subject.Code, - VisitName = qa.SubjectVisit.VisitName, - CurrentQCEnum = qa.CurrentQCEnum, - - AuditTime = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditTime : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditTime : qa.UpdateTime), - AuditUserName = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditUser.UserName : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditUser.UserName : u.UserName), - AuditUserFullName = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditUser.FullName : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditUser.FullName : u.FullName), - - QuestionId = qa.TrialQCQuestionConfigure.Id, - QuesitonName = qa.TrialQCQuestionConfigure.QuestionName, - ShowOrder = qa.TrialQCQuestionConfigure.ShowOrder, - Answer = qa.Answer, - - - }; - - var result = query.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList(); - - var list = result.GroupBy(t => new { t.SubjectVisitId, t.SecondReviewTime, t.TrialSiteCode, t.VisitNum, t.SubjectCode, t.VisitName, t.CurrentQCEnum }) - .Select(g => new QCQuestionResult_Export() - { - TrialSiteCode = g.Key.TrialSiteCode, - SubjectCode = g.Key.SubjectCode, - VisitName = g.Key.VisitName, - CurrentQCEnum = g.Key.CurrentQCEnum, - VisitNum = g.Key.VisitNum, - - AuditTime = g.Select(t => t.AuditTime).First(), - AuditUserName = g.Select(t => t.AuditUserName).First(), - AuditUserFullName = g.Select(t => t.AuditUserFullName).First(), - - QuestionAnswerList = g.Select(t => new QCQuestionAnswerExport() { Answer = t.Answer, QuestionName = t.QuesitonName, ShowOrder = t.ShowOrder, QuestionId = t.QuestionId }).OrderBy(t => t.ShowOrder).ToList() - - - }).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList(); - - - var exportInfo = new ExcelExportInfo(); - - exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); - - - var columNameList = _trialQCQuestionRepository.Where(t => t.TrialId == trialId).OrderBy(t => t.ShowOrder).Select(t => new { t.QuestionName, t.Id }).ToList(); - - - var dynamicColumnConfig = new DynamicColumnConfig() - { - AutoColumnTitleRowIndex = 2, - AutoColumnStartIndex = 7, - TempalteLastColumnIndex = 6, - DynamicItemDicName = "TranslateDicName", - DynamicItemValueName = "Answer", - DynamicItemTitleName = "QuestionName", - DynamicListName = "QuestionAnswerList", - DynamicItemTitleId = "QuestionId", - RemoveColunmIndexList = new List() { }, - ColumnIdNameList = columNameList.Select(t => new DynamicColumnConfig.ColumItem() { Id = t.Id, Name = t.QuestionName }).ToList(), - TranslateDicNameList = new List() - }; - - - var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(StaticData.Export.TrialQCResult_Export, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCQuestionResult_Export), dynamicColumnConfig: dynamicColumnConfig); - - return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") - { - FileDownloadName = $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}_{fileName}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" - }; - } } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs index 5867246ff..41bdf0055 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs @@ -1,3 +1,4 @@ +using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Domain.Share; using System.ComponentModel.DataAnnotations; @@ -179,6 +180,7 @@ namespace IRaCIS.Core.Application.ViewModel /// /// 类型 /// + [DictionaryTranslate("QcType")] public string Type { get; set; } /// @@ -194,11 +196,13 @@ namespace IRaCIS.Core.Application.ViewModel /// /// 语言类型 /// + [DictionaryTranslate("LanguageType")] public LanguageType LanguageType { get; set; } = LanguageType.Chinese; /// /// 是否是必须 /// + [DictionaryTranslate("YesOrNo")] public bool IsRequired { get; set; } /// @@ -219,16 +223,19 @@ namespace IRaCIS.Core.Application.ViewModel /// /// 是否启用 /// + [DictionaryTranslate("YesOrNo")] public bool IsEnable { get; set; } /// /// 任务类型 /// + [DictionaryTranslate("ReadingCategory")] public ReadingCategory ReadingCategory { get; set; } - + [DictionaryTranslate("CriterionType")] public CriterionType? CriterionTypeEnum { get; set; } + [DictionaryTranslate("YesOrNo")] public bool IsGeneral { get; set; } } diff --git a/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs b/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs index b63956c40..cdb5e4639 100644 --- a/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs +++ b/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs @@ -304,6 +304,8 @@ public static class StaticData public const string TrialImageBackRecordList_Export = "TrialImageBackRecordList_Export"; + public const string SystenMedicalQCQuestionsList_Export = "SystenMedicalQCQuestionsList_Export"; + }