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";
+
}