diff --git a/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs b/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs
index eda03b99e..40aab24a1 100644
--- a/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs
+++ b/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs
@@ -49,7 +49,7 @@ public static class ExcelExportHelper
{
var beforeValue = itemDic[needTranslateProperty.Name].ToString();
- itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue.ToLower()).FirstOrDefault()?.ValueCN;
+ itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue.ToLower()).FirstOrDefault()?.ValueCN??String.Empty;
}
itemDic.Add("No", no++);
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index f1b633343..2c6f63f5a 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -3582,6 +3582,26 @@
IsBaseUse
+
+
+ 是否必须全局阅片
+
+
+
+
+ DictionaryId
+
+
+
+
+ IsBaseLineUse
+
+
+
+
+ IsBaseUse
+
+
表格问题类型
@@ -3753,6 +3773,11 @@
是否完成配置
+
+
+ 表单类型
+
+
@@ -4791,6 +4816,20 @@
项目标准Id
+
+
+ 设置系统全局阅片阅片信息
+
+
+
+
+
+
+ 获取系统全局阅片信息
+
+
+
+
获取系统肿瘤信息
@@ -6427,6 +6466,11 @@
仲裁阅片
+
+
+ 是否必须全局阅片
+
+
肿瘤学阅片 原字段 IsClinicalReading
@@ -6602,6 +6646,11 @@
阅片信息签名时间
+
+
+ 是否必须全局阅片
+
+
修约小数点
@@ -7019,11 +7068,18 @@
- 一致性核查表
+ 一致性核查 检查信息表
+
+
+ 一致性核查记录表
+
+
+
+
CRC 访视上传列表
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
index 04d33e922..e3bea6e2b 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
@@ -2142,6 +2142,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
//回退后,回退状态恢复
sv.RequestBackState = RequestBackStateEnum.NotRequest;
sv.IsCheckBack = false;
+ sv.CheckBackTime = null;
sv.CheckState = CheckStateEnum.None;
sv.CheckChallengeState = CheckChanllengeTypeEnum.None;
@@ -2200,14 +2201,14 @@ namespace IRaCIS.Core.Application.Service.Allocation
if (isReReading)
{
- filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId);
+
//IR 申请 PM 同意 仅仅影响自己
if ((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null))
{
-
+ filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId);
//当前任务及其之后的所有访视任务、全局任务、裁判任务、肿瘤学阅片任务
diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
index bef7a96b2..5d58fabfe 100644
--- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
+++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
@@ -245,6 +245,9 @@ namespace IRaCIS.Core.Application.Contracts
public DateTime? OutEnrollmentTime { get; set; }
public DateTime? VisitOverTime { get; set; }
+
+ [DictionaryTranslateAttribute("Subject_Visit_Status")]
+
public SubjectStatus Status { get; set; }
@@ -350,6 +353,46 @@ namespace IRaCIS.Core.Application.Contracts
[DictionaryTranslateAttribute("YesOrNo")]
public bool IsDicom { get; set; }
}
+
+
+ public class PMKCheckEXportDTO
+ {
+ public string? TalkContent { get; set; } = String.Empty;
+ public string BlindName { get; set; } = String.Empty;
+ public bool IsUrgent { get; set; }
+
+ public DateTime? CheckPassedTime { get; set; }
+
+ public AuditStateEnum AuditState { get; set; }
+
+ public CheckStateEnum CheckState { get; set; }
+ public String TrialSiteCode { get; set; } = String.Empty;
+ public string SubjectCode { get; set; } = String.Empty;
+
+ [DictionaryTranslateAttribute("Subject_Visit_Status")]
+ public SubjectStatus SubjectStatus { get; set; }
+
+ public decimal VisitNum { get; set; }
+ public string VisitName { get; set; } = string.Empty;
+
+ public Guid SubjectId { get; set; }
+ public Guid SiteId { get; set; }
+
+ [DictionaryTranslateAttribute("RequestBackState")]
+ public RequestBackStateEnum RequestBackState { get; set; }
+
+ public DateTime? CheckTime { get; set; }
+
+
+ [DictionaryTranslateAttribute("CheckChallengeState")]
+ public CheckChanllengeTypeEnum CheckChallengeState { get; set; }
+
+ [DictionaryTranslateAttribute("YesOrNo")]
+ public bool? IsCheckBack { get; set; }
+
+ public string CheckResult { get; set; } = String.Empty;
+ }
+
#endregion
diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs
index 75044331e..727c44882 100644
--- a/IRaCIS.Core.Application/Service/QC/QCListService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs
@@ -179,7 +179,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
///
- /// 一致性核查表
+ /// 一致性核查 检查信息表
///
///
///
@@ -256,7 +256,34 @@ namespace IRaCIS.Core.Application.Image.QA
}
+ ///
+ /// 一致性核查记录表
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task GetConsistencyVerificationList_Export(CheckQuery checkQuery,
+ [FromServices] IRepository _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(_mapper.ConfigurationProvider).ToListAsync();
+
+ var exportInfo = (await _trialRepository.Where(t => t.Id == checkQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
+
+ exportInfo.List = list;
+
+ return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectVisitCheckList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PMKCheckEXportDTO));
+ }
#endregion
diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
index 959cd32c6..897c74f57 100644
--- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
@@ -472,6 +472,7 @@ namespace IRaCIS.Core.Application.Image.QA
//回退后,回退状态恢复
sv.RequestBackState = RequestBackStateEnum.NotRequest;
sv.IsCheckBack = true;
+ sv.CheckBackTime = DateTime.Now;
sv.CheckState = CheckStateEnum.None;
sv.CheckChallengeState = CheckChanllengeTypeEnum.None;
diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
index 821064043..4519e2043 100644
--- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
@@ -70,6 +70,12 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.FirstGiveMedicineTime, u => u.MapFrom(s => s.Subject.FirstGiveMedicineTime))
.ForMember(d => d.TrialReadingCriterionName, u => u.MapFrom(s => s.TrialReadingCriterion.CriterionName));
+
+ CreateMap()
+ .ForMember(d => d.TalkContent, u => u.MapFrom(s => s.CheckChallengeDialogList.OrderByDescending(y => y.CreateTime).Select(x => x.TalkContent).FirstOrDefault()))
+ .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
+ .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
+
#endregion
diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
index 6dec0d5bc..5aae51bc9 100644
--- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
+++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
@@ -107,6 +107,8 @@ namespace IRaCIS.Core.Domain.Models
//是否一致性核查回退
public bool? IsCheckBack { get; set; }
+ public DateTime? CheckBackTime { get; set; }
+
public CheckChanllengeTypeEnum CheckChallengeState { get; set; }
public PDStateEnum PDState { get; set; } = PDStateEnum.None;
diff --git a/IRaCIS.Core.Domain/_Config/_StaticData.cs b/IRaCIS.Core.Domain/_Config/_StaticData.cs
index 0236b4fe5..3a0a87724 100644
--- a/IRaCIS.Core.Domain/_Config/_StaticData.cs
+++ b/IRaCIS.Core.Domain/_Config/_StaticData.cs
@@ -133,6 +133,8 @@ public static class StaticData
public const string TrialStudyList_Export = "TrialStudyList_Export";
+ public const string TrialSubjectVisitCheckList_Export = "TrialSubjectVisitCheckList_Export";
+
}