Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
1031222e47
|
|
@ -18850,6 +18850,13 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.TrialStatService.GetTrialEfficacyEvaluationStatList(IRaCIS.Core.Application.ViewModel.EfficacyEvaluationQuery)">
|
||||||
|
<summary>
|
||||||
|
疗效统计表,只针对肿瘤标准 排除基线
|
||||||
|
</summary>
|
||||||
|
<param name="inQuery"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.ChallengeStateTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.ChallengeStateTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
访视 质疑状态 触发修改
|
访视 质疑状态 触发修改
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using MiniExcelLibs.Attributes;
|
using IRaCIS.Core.Application.Helper;
|
||||||
|
using MiniExcelLibs.Attributes;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.MassTransit.Command
|
namespace IRaCIS.Core.Application.MassTransit.Command
|
||||||
|
|
@ -37,7 +38,8 @@ namespace IRaCIS.Core.Application.MassTransit.Command
|
||||||
|
|
||||||
public class FullCheckResult: CheckViewModel
|
public class FullCheckResult: CheckViewModel
|
||||||
{
|
{
|
||||||
|
public string LatestScanDateStr { get; set; } = string.Empty;
|
||||||
|
public string Modalitys { get; set; } = string.Empty;
|
||||||
public DateTime CheckTime { get; set; }
|
public DateTime CheckTime { get; set; }
|
||||||
|
|
||||||
public string CheckResult { get; set; }
|
public string CheckResult { get; set; }
|
||||||
|
|
@ -81,6 +83,7 @@ namespace IRaCIS.Core.Application.MassTransit.Command
|
||||||
public string Modality { get; set; } = string.Empty;
|
public string Modality { get; set; } = string.Empty;
|
||||||
|
|
||||||
#region 全量一致性核查加入
|
#region 全量一致性核查加入
|
||||||
|
[DictionaryTranslateAttribute("Subject_Visit_Status")]
|
||||||
public SubjectStatus SubjectStatus { get; set; }
|
public SubjectStatus SubjectStatus { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
|
||||||
var dbExceptExcel = dbVisitStudyList.Except(etcVisitStudyList);
|
var dbExceptExcel = dbVisitStudyList.Except(etcVisitStudyList);
|
||||||
|
|
||||||
// excel 存在
|
// excel 存在
|
||||||
var excelExceptDB = etcVisitStudyList.Except(dbCheckList);
|
var excelExceptDB = etcVisitStudyList.Except(dbVisitStudyList);
|
||||||
|
|
||||||
//ETC 和系统的完全一致 两者没有差别
|
//ETC 和系统的完全一致 两者没有差别
|
||||||
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
|
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
|
||||||
|
|
@ -313,8 +313,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
|
||||||
var etcList = context.Message.ETCList;
|
var etcList = context.Message.ETCList;
|
||||||
|
|
||||||
|
|
||||||
Expression<Func<SubjectVisit, bool>> subjectVisitLambda = x => x.TrialId == trialId /*&& x.Subject.IsSubjectQuit == false*/ && x.AuditState == AuditStateEnum.QCPassed &&
|
Expression<Func<SubjectVisit, bool>> subjectVisitLambda = x => x.TrialId == trialId /*&& x.Subject.IsSubjectQuit == false*/ && x.AuditState == AuditStateEnum.QCPassed;
|
||||||
(x.CheckState == CheckStateEnum.CVPassed);
|
|
||||||
|
|
||||||
var dicomQuery = from sv in _subjectVisitRepository.Where(subjectVisitLambda)
|
var dicomQuery = from sv in _subjectVisitRepository.Where(subjectVisitLambda)
|
||||||
join subject in _subjectRepository.AsQueryable() on sv.SubjectId equals subject.Id
|
join subject in _subjectRepository.AsQueryable() on sv.SubjectId equals subject.Id
|
||||||
|
|
@ -390,9 +389,9 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
|
||||||
var dbExceptExcel = dbVisitStudyList.Except(etcVisitStudyList);
|
var dbExceptExcel = dbVisitStudyList.Except(etcVisitStudyList);
|
||||||
|
|
||||||
// excel 存在
|
// excel 存在
|
||||||
var excelExceptDB = etcVisitStudyList.Except(dbCheckList);
|
var excelExceptDB = etcVisitStudyList.Except(dbVisitStudyList);
|
||||||
|
|
||||||
var dbCurrentVisitFirst = dbCheckList.First();
|
var dbCurrentVisitFirst = dbVisitStudyList.First();
|
||||||
|
|
||||||
//ETC 和系统的完全一致 两者没有差别
|
//ETC 和系统的完全一致 两者没有差别
|
||||||
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
|
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
|
||||||
|
|
@ -407,8 +406,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
|
||||||
SiteCode = dbCurrentVisitFirst.SiteCode,
|
SiteCode = dbCurrentVisitFirst.SiteCode,
|
||||||
SubjectCode = dbCurrentVisitFirst.SubjectCode,
|
SubjectCode = dbCurrentVisitFirst.SubjectCode,
|
||||||
VisitName = dbCurrentVisitFirst.VisitName,
|
VisitName = dbCurrentVisitFirst.VisitName,
|
||||||
Modality = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
|
Modalitys = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
|
||||||
StudyDate = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? ""
|
LatestScanDateStr = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? ""
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -425,8 +424,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
|
||||||
SiteCode = dbCurrentVisitFirst.SiteCode,
|
SiteCode = dbCurrentVisitFirst.SiteCode,
|
||||||
SubjectCode = dbCurrentVisitFirst.SubjectCode,
|
SubjectCode = dbCurrentVisitFirst.SubjectCode,
|
||||||
VisitName = dbCurrentVisitFirst.VisitName,
|
VisitName = dbCurrentVisitFirst.VisitName,
|
||||||
Modality = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
|
Modalitys = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
|
||||||
StudyDate = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? "",
|
LatestScanDateStr = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? "",
|
||||||
CheckResult = checkResult
|
CheckResult = checkResult
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
using System;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
|
using IRaCIS.Core.Application.Helper;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
@ -76,8 +79,9 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public class EfficacyEvaluationQuery
|
public class EfficacyEvaluationQuery
|
||||||
{
|
{
|
||||||
|
[NotDefault]
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
[NotDefault]
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,4 +91,70 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public int SubjectCount { get; set; }
|
public int SubjectCount { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class EfficacyEvaluationExport
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
|
public string SubjectCode { get; set; } = String.Empty;
|
||||||
|
|
||||||
|
public decimal VisitTaskNum { get; set; }
|
||||||
|
|
||||||
|
public string TaskName { get; set; }
|
||||||
|
public string TaskBlindName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public ReadingTaskState ReadingTaskState { get; set; }
|
||||||
|
|
||||||
|
public ReadingCategory ReadingCategory { get; set; }
|
||||||
|
|
||||||
|
public bool? IsBaseline { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[DictionaryTranslateAttribute("ArmEnum")]
|
||||||
|
public Arm ArmEnum { get; set; }
|
||||||
|
|
||||||
|
//裁判结果选择的访视或者全局任务Id
|
||||||
|
public Arm? JudgeArmEnum { get; set; }
|
||||||
|
|
||||||
|
//裁判选择标记
|
||||||
|
//根据裁判的任务结果 设置访视任务的这个字段 该字段表示 裁判认同该任务的结果
|
||||||
|
[DictionaryTranslateAttribute("YesOrNoAudit")]
|
||||||
|
public bool? IsJudgeSelect { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
//在当前访视触发裁判,或者在截止日期小于等于当前访视的阅片期触发裁判
|
||||||
|
[DictionaryTranslateAttribute("YesOrNoAudit")]
|
||||||
|
public bool? IsTrigerJudge { get; set; }
|
||||||
|
|
||||||
|
//(如果是访视点裁判,则仅在所选阅片人对应访视 显示;如果是阅片期裁判,则在所选阅片人 阅片期内的所有访视 显示此原因)
|
||||||
|
public string JudgeNote { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
public string VisitNote { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Guid? DoctorUserId { get; set; }
|
||||||
|
public string UserName { get; set; }
|
||||||
|
public List<CommonQuesionInfo> QuestionAnswerList { get; set; }
|
||||||
|
|
||||||
|
public List<decimal> SubjectCriterionReadingPeriodVisitNumList { get; set; }
|
||||||
|
|
||||||
|
public String TrialSiteCode { get; set; } = String.Empty;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ public class TrialStatService(
|
||||||
IRepository<TrialDocument> _trialDocumentRepository,
|
IRepository<TrialDocument> _trialDocumentRepository,
|
||||||
IRepository<SystemDocument> _systemDocumentRepository,
|
IRepository<SystemDocument> _systemDocumentRepository,
|
||||||
IRepository<SystemNotice> _systemNoticeRepository,
|
IRepository<SystemNotice> _systemNoticeRepository,
|
||||||
IRepository<SubjectVisitImageBackRecord> _subjectVisitImageBackRecordReposiotry,
|
IRepository<VisitTask> _visitTaskRepository,
|
||||||
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
|
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -33,7 +33,8 @@ public class TrialStatService(
|
||||||
QCFinishedCount = t.SubjectVisitList.Where(t => t.AuditState == AuditStateEnum.QCPassed || t.AuditState == AuditStateEnum.QCFailed).Count(),
|
QCFinishedCount = t.SubjectVisitList.Where(t => t.AuditState == AuditStateEnum.QCPassed || t.AuditState == AuditStateEnum.QCFailed).Count(),
|
||||||
CheckFinishedCount = t.SubjectVisitList.Where(t => t.CheckState == CheckStateEnum.CVPassed).Count(),
|
CheckFinishedCount = t.SubjectVisitList.Where(t => t.CheckState == CheckStateEnum.CVPassed).Count(),
|
||||||
|
|
||||||
CriterionList = t.TrialReadingCriterionList.Select(t => new VisitReadingCriterionInfo()
|
CriterionList = t.TrialReadingCriterionList.Where(t => inQuery.TrialReadingCriterionId != null ? t.Id == inQuery.TrialReadingCriterionId : true)
|
||||||
|
.Select(t => new VisitReadingCriterionInfo()
|
||||||
{
|
{
|
||||||
TrialReadingCriterionId = t.Id,
|
TrialReadingCriterionId = t.Id,
|
||||||
TrialReadingCriterionName = t.CriterionName,
|
TrialReadingCriterionName = t.CriterionName,
|
||||||
|
|
@ -84,10 +85,36 @@ public class TrialStatService(
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////疗效统计表,只针对肿瘤标准 排除基线
|
|
||||||
/////
|
|
||||||
//public async Task<List<EfficacyEvaluationStatViewModel>> GetTrialEfficacyEvaluationStatList(EfficacyEvaluationQuery inQuery)
|
|
||||||
//{
|
|
||||||
|
|
||||||
//}
|
/// <summary>
|
||||||
|
/// 疗效统计表,只针对肿瘤标准 排除基线
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inQuery"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<EfficacyEvaluationStatViewModel>> GetTrialEfficacyEvaluationStatList(EfficacyEvaluationQuery inQuery)
|
||||||
|
{
|
||||||
|
|
||||||
|
var query = _visitTaskRepository
|
||||||
|
.Where(t => t.TrialId == inQuery.TrialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
|
||||||
|
|
||||||
|
//访视和全局查询已签名完成的,裁判可以是未签名,未完成的
|
||||||
|
.Where(t => (t.ReadingTaskState == ReadingTaskState.HaveSigned && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)) || t.ReadingCategory == ReadingCategory.Judge)
|
||||||
|
.Select(t => new EfficacyEvaluationExport()
|
||||||
|
{
|
||||||
|
Id = t.Id,
|
||||||
|
SubjectId = t.SubjectId,
|
||||||
|
SubjectCode = t.Subject.Code,
|
||||||
|
VisitTaskNum = t.VisitTaskNum,
|
||||||
|
TaskName = t.TaskName,
|
||||||
|
TaskBlindName = t.TaskBlindName,
|
||||||
|
ReadingTaskState = t.ReadingTaskState,
|
||||||
|
ReadingCategory = t.ReadingCategory,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return new List<EfficacyEvaluationStatViewModel> { };
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue