Merge branch '中心影像_Test环境' of http://192.168.1.2:8033/IRaCIS_Core_Api into 中心影像_Test环境
commit
7c9a07f384
|
@ -11,6 +11,7 @@ using IRaCIS.Core.Application.Service;
|
||||||
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
||||||
using IRaCIS.Core.Application.Service.Inspection.Interface;
|
using IRaCIS.Core.Application.Service.Inspection.Interface;
|
||||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Interface;
|
||||||
using IRaCIS.Core.Application.ViewModel;
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
@ -36,6 +37,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
private readonly IHttpContextAccessor _httpContext;
|
private readonly IHttpContextAccessor _httpContext;
|
||||||
private readonly ITrialConfigService _trialConfigService;
|
private readonly ITrialConfigService _trialConfigService;
|
||||||
private readonly INoneDicomStudyService _noneDicomStudyService;
|
private readonly INoneDicomStudyService _noneDicomStudyService;
|
||||||
|
private readonly IClinicalAnswerService _clinicalAnswerService;
|
||||||
private readonly ISubjectService _subjectService;
|
private readonly ISubjectService _subjectService;
|
||||||
private readonly IReadingClinicalDataService _readingClinicalDataService;
|
private readonly IReadingClinicalDataService _readingClinicalDataService;
|
||||||
private readonly ISubjectVisitService _subjectVisitService;
|
private readonly ISubjectVisitService _subjectVisitService;
|
||||||
|
@ -62,6 +64,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
IReadingMedicineQuestionService readingMedicineQuestionService,
|
IReadingMedicineQuestionService readingMedicineQuestionService,
|
||||||
ITrialConfigService _trialConfigService,
|
ITrialConfigService _trialConfigService,
|
||||||
INoneDicomStudyService noneDicomStudyService,
|
INoneDicomStudyService noneDicomStudyService,
|
||||||
|
IClinicalAnswerService clinicalAnswerService,
|
||||||
ISubjectService _subjectService,
|
ISubjectService _subjectService,
|
||||||
IReadingClinicalDataService _readingClinicalDataService,
|
IReadingClinicalDataService _readingClinicalDataService,
|
||||||
ISubjectVisitService subjectVisitService,
|
ISubjectVisitService subjectVisitService,
|
||||||
|
@ -82,6 +85,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
this._httpContext = httpContext;
|
this._httpContext = httpContext;
|
||||||
this._trialConfigService = _trialConfigService;
|
this._trialConfigService = _trialConfigService;
|
||||||
this._noneDicomStudyService = noneDicomStudyService;
|
this._noneDicomStudyService = noneDicomStudyService;
|
||||||
|
this._clinicalAnswerService = clinicalAnswerService;
|
||||||
this._subjectService = _subjectService;
|
this._subjectService = _subjectService;
|
||||||
this._readingClinicalDataService = _readingClinicalDataService;
|
this._readingClinicalDataService = _readingClinicalDataService;
|
||||||
this._subjectVisitService = subjectVisitService;
|
this._subjectVisitService = subjectVisitService;
|
||||||
|
@ -233,6 +237,94 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC签名临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="opt"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("Inspection/ClinicalAnswer/CRCSignClinicalData")]
|
||||||
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
|
[UnitOfWork]
|
||||||
|
public async Task<IResponseOutput> CRCSignClinicalData(DataInspectionDto<CRCSignClinicalDataInDto> opt)
|
||||||
|
{
|
||||||
|
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||||
|
var result = await _clinicalAnswerService.CRCSignClinicalData(opt.Data);
|
||||||
|
await _inspectionService.CompletedSign(singid, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC确认临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="opt"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("Inspection/ClinicalAnswer/CRCConfirmClinical")]
|
||||||
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
|
[UnitOfWork]
|
||||||
|
public async Task<IResponseOutput> CRCConfirmClinical(DataInspectionDto<CRCConfirmClinicalInDto> opt)
|
||||||
|
{
|
||||||
|
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||||
|
var result = await _clinicalAnswerService.CRCConfirmClinical(opt.Data);
|
||||||
|
await _inspectionService.CompletedSign(singid, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC撤销临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="opt"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("Inspection/ClinicalAnswer/CRCCancelConfirmClinical")]
|
||||||
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
|
[UnitOfWork]
|
||||||
|
public async Task<IResponseOutput> CRCCancelConfirmClinical(DataInspectionDto<CRCCancelConfirmClinicalInDto> opt)
|
||||||
|
{
|
||||||
|
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||||
|
var result = await _clinicalAnswerService.CRCCancelConfirmClinical(opt.Data);
|
||||||
|
await _inspectionService.CompletedSign(singid, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PM确认临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="opt"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("Inspection/ClinicalAnswer/PMConfirmClinical")]
|
||||||
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
|
[UnitOfWork]
|
||||||
|
public async Task<IResponseOutput> PMConfirmClinical(DataInspectionDto<CRCConfirmClinicalInDto> opt)
|
||||||
|
{
|
||||||
|
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||||
|
var result = await _clinicalAnswerService.PMConfirmClinical(opt.Data);
|
||||||
|
await _inspectionService.CompletedSign(singid, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 提交结构化录入并签名
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="opt"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("Inspection/ClinicalAnswer/SubmitClinicalFormAndSign")]
|
||||||
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
|
[UnitOfWork]
|
||||||
|
public async Task<IResponseOutput> SubmitClinicalFormAndSign(DataInspectionDto<SubmitClinicalFormInDto> opt)
|
||||||
|
{
|
||||||
|
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||||
|
var result = await _clinicalAnswerService.SubmitClinicalForm(opt.Data);
|
||||||
|
await _inspectionService.CompletedSign(singid, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提交阅片裁判问题
|
/// 提交阅片裁判问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -139,6 +139,41 @@
|
||||||
<param name="opt"></param>
|
<param name="opt"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.CRCSignClinicalData(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.CRCSignClinicalDataInDto})">
|
||||||
|
<summary>
|
||||||
|
CRC签名临床数据
|
||||||
|
</summary>
|
||||||
|
<param name="opt"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.CRCConfirmClinical(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto})">
|
||||||
|
<summary>
|
||||||
|
CRC确认临床数据
|
||||||
|
</summary>
|
||||||
|
<param name="opt"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.CRCCancelConfirmClinical(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.CRCCancelConfirmClinicalInDto})">
|
||||||
|
<summary>
|
||||||
|
CRC撤销临床数据
|
||||||
|
</summary>
|
||||||
|
<param name="opt"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.PMConfirmClinical(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto})">
|
||||||
|
<summary>
|
||||||
|
PM确认临床数据
|
||||||
|
</summary>
|
||||||
|
<param name="opt"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.SubmitClinicalFormAndSign(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.SubmitClinicalFormInDto})">
|
||||||
|
<summary>
|
||||||
|
提交结构化录入并签名
|
||||||
|
</summary>
|
||||||
|
<param name="opt"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.SubmitJudgeVisitTaskResult(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.SaveJudgeVisitTaskResult})">
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.SubmitJudgeVisitTaskResult(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.SaveJudgeVisitTaskResult})">
|
||||||
<summary>
|
<summary>
|
||||||
提交阅片裁判问题
|
提交阅片裁判问题
|
||||||
|
|
|
@ -37,6 +37,7 @@ namespace IRaCIS.Core.API
|
||||||
triggerOptions.AddTrigger<AddSubjectTrigger>();
|
triggerOptions.AddTrigger<AddSubjectTrigger>();
|
||||||
triggerOptions.AddTrigger<ChallengeStateTrigger>();
|
triggerOptions.AddTrigger<ChallengeStateTrigger>();
|
||||||
triggerOptions.AddTrigger<SubjectStateTrigger>();
|
triggerOptions.AddTrigger<SubjectStateTrigger>();
|
||||||
|
triggerOptions.AddTrigger<AddCRCCliniaclDataTrigger>();
|
||||||
triggerOptions.AddTrigger<SubjectVisitCheckPassedTrigger>();
|
triggerOptions.AddTrigger<SubjectVisitCheckPassedTrigger>();
|
||||||
triggerOptions.AddTrigger<SubjectVisitFinalVisitTrigger>();
|
triggerOptions.AddTrigger<SubjectVisitFinalVisitTrigger>();
|
||||||
triggerOptions.AddTrigger<SubjectVisitTrigger>();
|
triggerOptions.AddTrigger<SubjectVisitTrigger>();
|
||||||
|
|
|
@ -414,8 +414,8 @@ var abp = abp || {};
|
||||||
|
|
||||||
//Inputs
|
//Inputs
|
||||||
createInput(modalUxContent, 'tenancyName', 'Tenancy Name (Leave empty for Host)');
|
createInput(modalUxContent, 'tenancyName', 'Tenancy Name (Leave empty for Host)');
|
||||||
createInput(modalUxContent, 'userName', 'Username or email address','text','admin');
|
createInput(modalUxContent, 'userName', 'Username or email address','text','cyldev');
|
||||||
createInput(modalUxContent, 'password', 'Password','password');
|
createInput(modalUxContent, 'password', 'Password','password','123456');
|
||||||
|
|
||||||
//Buttons
|
//Buttons
|
||||||
var authBtnWrapper = document.createElement('div');
|
var authBtnWrapper = document.createElement('div');
|
||||||
|
|
|
@ -85,6 +85,14 @@
|
||||||
<param name="type"></param>
|
<param name="type"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.NpoiWordHelper.ReplaceTableKey(NPOI.XWPF.UserModel.XWPFTable,System.Collections.IList,System.String)">
|
||||||
|
<summary>
|
||||||
|
替换表格Key
|
||||||
|
</summary>
|
||||||
|
<param name="table"></param>
|
||||||
|
<param name="list"></param>
|
||||||
|
<param name="field"></param>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Service.TaskAllocationRuleService">
|
<member name="T:IRaCIS.Core.Application.Service.TaskAllocationRuleService">
|
||||||
<summary>
|
<summary>
|
||||||
分配规则
|
分配规则
|
||||||
|
@ -272,11 +280,74 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetTrialDoctorUserSelectList(System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetSubjectAssignAndTaskStatList(IRaCIS.Core.Application.ViewModel.SubjectAssignStatQuery)">
|
||||||
<summary>
|
<summary>
|
||||||
获取项目下 阅片人下拉
|
Subject 任务类型 统计 +分配情况
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.BatchAssignDoctorToSubject(IRaCIS.Core.Application.ViewModel.BatchAssignDoctorToSubjectCommand)">
|
||||||
|
<summary>
|
||||||
|
一次性分配所有医生 批量分配(添加),后端现在没限制
|
||||||
|
</summary>
|
||||||
|
<param name="command"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetDoctorSubjectStat(System.Guid,System.Guid)">
|
||||||
|
<summary>
|
||||||
|
阅片人维度 Subject统计表
|
||||||
</summary>
|
</summary>
|
||||||
<param name="trialId"></param>
|
<param name="trialId"></param>
|
||||||
|
<param name="trialReadingCriterionId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetSubjectAssignedDoctorList(System.Guid,System.Guid)">
|
||||||
|
<summary>
|
||||||
|
获取Subject 分配医生情况
|
||||||
|
</summary>
|
||||||
|
<param name="subjectId"></param>
|
||||||
|
<param name="trialReadingCriterionId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.CancelSubjectAssignedDoctor(IRaCIS.Core.Application.ViewModel.CancelSubjectDoctorCommand)">
|
||||||
|
<summary>
|
||||||
|
取消Subject 分配的医生
|
||||||
|
</summary>
|
||||||
|
<param name="cancelCommand"></param>
|
||||||
|
<returns></returns>
|
||||||
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.AssignSubjectTaskToDoctor(IRaCIS.Core.Application.ViewModel.AssignSubjectTaskToDoctorCommand)">
|
||||||
|
<summary>
|
||||||
|
任务 手动分配 重新分配 确认 取消分配
|
||||||
|
</summary>分配
|
||||||
|
<param name="assignSubjectTaskToDoctorCommand"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetSubjectAssignList(IRaCIS.Core.Application.ViewModel.SubjectAssignQuery)">
|
||||||
|
<summary>
|
||||||
|
获取手动分配 未分配的Subject列表(IsHaveAssigned 传递false)
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.AssignSubjectDoctor(IRaCIS.Core.Application.ViewModel.AssginSubjectDoctorCommand)">
|
||||||
|
<summary>
|
||||||
|
批量为 多个Subject 分配医生 手动分配 IsReAssign 为true 批量删除 重新分配
|
||||||
|
</summary>
|
||||||
|
<param name="assginSubjectDoctorCommand"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.CancelSubjectAssignDoctor(IRaCIS.Core.Application.ViewModel.CancelSubjectAssignCommand)">
|
||||||
|
<summary>
|
||||||
|
批量取消Subject 分配的医生
|
||||||
|
</summary>
|
||||||
|
<returns></returns> 数量
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.ManualAssignDoctorApplyTask(IRaCIS.Core.Application.ViewModel.AssignConfirmCommand)">
|
||||||
|
<summary>
|
||||||
|
手动分配确认 绑定该Subject的已存在的任务给医生
|
||||||
|
</summary>
|
||||||
|
<param name="assignConfirmCommand"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetVisitTaskList(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Application.Service.IVisitTaskHelpeService)">
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetVisitTaskList(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Application.Service.IVisitTaskHelpeService)">
|
||||||
|
@ -287,25 +358,11 @@
|
||||||
<param name="_visitTaskCommonService"></param>
|
<param name="_visitTaskCommonService"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.PIAuditTask(IRaCIS.Core.Application.ViewModel.PIAuditTaskCommand)">
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetJudgeVisitTaskList(IRaCIS.Core.Application.ViewModel.VisitTaskQuery)">
|
||||||
<summary>
|
|
||||||
new- 首次审核 后续编辑审核
|
|
||||||
</summary>
|
|
||||||
<param name="incommand"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.PIAuditTaskReply(IRaCIS.Core.Application.ViewModel.PIAuditTaskReplyCommand)">
|
|
||||||
<summary>
|
|
||||||
new- 回复审核内容
|
|
||||||
</summary>
|
|
||||||
<param name="incommand"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetPIAuditDialogList(IRaCIS.Core.Application.ViewModel.PIAuditDialogQuery)">
|
|
||||||
<summary>
|
<summary>
|
||||||
new- 获取审核对话列表
|
裁判任务
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inQuery"></param>
|
<param name="queryVisitTask"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetReadingTaskList(IRaCIS.Core.Application.ViewModel.VisitTaskQuery)">
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetReadingTaskList(IRaCIS.Core.Application.ViewModel.VisitTaskQuery)">
|
||||||
|
@ -1091,6 +1148,11 @@
|
||||||
<member name="M:IRaCIS.Core.Application.Service.SystemNoticeService.GetUserSystemNoticeList(IRaCIS.Core.Application.ViewModel.SystemNoticeQuery)">
|
<member name="M:IRaCIS.Core.Application.Service.SystemNoticeService.GetUserSystemNoticeList(IRaCIS.Core.Application.ViewModel.SystemNoticeQuery)">
|
||||||
<summary>获取登陆用户的系统通知列表 只是过滤了用户类型 和已经发布的</summary>
|
<summary>获取登陆用户的系统通知列表 只是过滤了用户类型 和已经发布的</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.Service.UserLogService">
|
||||||
|
<summary>
|
||||||
|
UserLogService
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.QCCommon.VerifyIsCRCSubmmitAsync(IRaCIS.Core.Infra.EFCore.IRepository,IRaCIS.Core.Domain.Share.IUserInfo,System.Nullable{System.Guid})">
|
<member name="M:IRaCIS.Core.Application.Service.QCCommon.VerifyIsCRCSubmmitAsync(IRaCIS.Core.Infra.EFCore.IRepository,IRaCIS.Core.Domain.Share.IUserInfo,System.Nullable{System.Guid})">
|
||||||
<summary>
|
<summary>
|
||||||
验证CRC 是否已提交 已提交 就不允许进行任何操作,如果是IQC 那么还验证是否是当前任务领取人
|
验证CRC 是否已提交 已提交 就不允许进行任何操作,如果是IQC 那么还验证是否是当前任务领取人
|
||||||
|
@ -2437,6 +2499,13 @@
|
||||||
临床答案
|
临床答案
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.CRCSignClinicalData(IRaCIS.Core.Application.Service.Reading.Dto.CRCSignClinicalDataInDto)">
|
||||||
|
<summary>
|
||||||
|
CRC签名临床数据
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.AutoAddCRCClinical(IRaCIS.Core.Application.Service.Reading.Dto.AutoAddClinicalInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.AutoAddCRCClinical(IRaCIS.Core.Application.Service.Reading.Dto.AutoAddClinicalInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
自动添加CRC临床数据
|
自动添加CRC临床数据
|
||||||
|
@ -2472,6 +2541,21 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.DeleteClinicalForm(IRaCIS.Core.Application.Service.Reading.Dto.DeleteClinicalFormInDto)">
|
||||||
|
<summary>
|
||||||
|
删除表单数据
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetPMConfirmList(IRaCIS.Core.Application.Service.Reading.Dto.GetPMConfirmListInDto)">
|
||||||
|
<summary>
|
||||||
|
获取PM待确认列表
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetCRCConfirmList(IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetCRCConfirmList(IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
获取CRC确认列表
|
获取CRC确认列表
|
||||||
|
@ -2486,6 +2570,20 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetClinicalTableList(IRaCIS.Core.Application.Service.Reading.Dto.GetClinicalTableListInDto)">
|
||||||
|
<summary>
|
||||||
|
获取临床数据表格信息 查看没有表格问题的列表
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetClinicalDateList(IRaCIS.Core.Application.Service.Reading.Dto.GetCRCBeConfirmListInDto)">
|
||||||
|
<summary>
|
||||||
|
获取临床数据表格信息 查看有表格问题的列表
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.CRCConfirmClinical(IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.CRCConfirmClinical(IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
CRC 确认临床数据
|
CRC 确认临床数据
|
||||||
|
@ -2668,6 +2766,46 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCSubjectClinicalOutDto.UploadRole">
|
||||||
|
<summary>
|
||||||
|
上传角色
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCSubjectClinicalOutDto.ReadingId">
|
||||||
|
<summary>
|
||||||
|
访视Id 或者模块Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCSubjectClinicalOutDto.ClinicalDataLevel">
|
||||||
|
<summary>
|
||||||
|
临床级别
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCSubjectClinicalOutDto.ClinicalUploadType">
|
||||||
|
<summary>
|
||||||
|
上传方式
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetClinicalTableListOutDto.ModuleName">
|
||||||
|
<summary>
|
||||||
|
模块名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto.IsClinicalDataComplete">
|
||||||
|
<summary>
|
||||||
|
临床数据是否完整
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto.IsClinicalDataBlind">
|
||||||
|
<summary>
|
||||||
|
临床数据是否盲化
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.CRCClinicalForm.SubjectId">
|
||||||
|
<summary>
|
||||||
|
受试者Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.CRCClinicalForm.ClinicalDataLevel">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.CRCClinicalForm.ClinicalDataLevel">
|
||||||
<summary>
|
<summary>
|
||||||
临床级别
|
临床级别
|
||||||
|
@ -2678,16 +2816,21 @@
|
||||||
受试者ID
|
受试者ID
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListOutDto.ModuleName">
|
||||||
|
<summary>
|
||||||
|
模块名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListOutDto.IsCRCApplicationRevoke">
|
||||||
|
<summary>
|
||||||
|
CRC是否正在申请撤回
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListOutDto.LatestScanDate">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListOutDto.LatestScanDate">
|
||||||
<summary>
|
<summary>
|
||||||
最晚拍片日期
|
最晚拍片日期
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.SubmitClinicalFormInDto.VisitId">
|
|
||||||
<summary>
|
|
||||||
VisitId
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.SubmitClinicalFormInDto.ReadingId">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.SubmitClinicalFormInDto.ReadingId">
|
||||||
<summary>
|
<summary>
|
||||||
VisitId
|
VisitId
|
||||||
|
@ -3033,6 +3176,11 @@
|
||||||
最大长度
|
最大长度
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionBase.MaxQuestionCount">
|
||||||
|
<summary>
|
||||||
|
最大行数
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionBase.ClinicalOptionTypeEnum">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionBase.ClinicalOptionTypeEnum">
|
||||||
<summary>
|
<summary>
|
||||||
临床数据选项类型(无,自定义)
|
临床数据选项类型(无,自定义)
|
||||||
|
@ -3758,6 +3906,21 @@
|
||||||
路径
|
路径
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.ClinicalDataTrialSetId">
|
||||||
|
<summary>
|
||||||
|
临床数据类型Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.GetClinicalType">
|
||||||
|
<summary>
|
||||||
|
1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.IsOnlyGetCRCReadModule">
|
||||||
|
<summary>
|
||||||
|
只获取CRC上传的阅片模块结构化录入
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.SelectIsSign">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.SelectIsSign">
|
||||||
<summary>
|
<summary>
|
||||||
只查询已经签名的临床数据
|
只查询已经签名的临床数据
|
||||||
|
@ -3768,6 +3931,16 @@
|
||||||
获取访视列表
|
获取访视列表
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.ClinicalDataTrialSetId">
|
||||||
|
<summary>
|
||||||
|
临床数据类型Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.GetClinicalType">
|
||||||
|
<summary>
|
||||||
|
1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.IsVisit">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.IsVisit">
|
||||||
<summary>
|
<summary>
|
||||||
是否是访视
|
是否是访视
|
||||||
|
@ -3833,6 +4006,11 @@
|
||||||
访视Id 或者模块Id
|
访视Id 或者模块Id
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListOutDto.IsCRCApplicationRevoke">
|
||||||
|
<summary>
|
||||||
|
CRC是否正在申请撤回
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListOutDto.ClinicalDataSetName">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListOutDto.ClinicalDataSetName">
|
||||||
<summary>
|
<summary>
|
||||||
项目配置临床类型Name
|
项目配置临床类型Name
|
||||||
|
@ -3903,6 +4081,16 @@
|
||||||
文件数量
|
文件数量
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalFromData.ClinicalFormId">
|
||||||
|
<summary>
|
||||||
|
表单Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalFromData.CheckDate">
|
||||||
|
<summary>
|
||||||
|
检查日期
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetFileDto.Id">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetFileDto.Id">
|
||||||
<summary>
|
<summary>
|
||||||
Id
|
Id
|
||||||
|
@ -7885,6 +8073,16 @@
|
||||||
完成阅片量
|
完成阅片量
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRUnReadOutDto.UnReadJudgeTaskCount">
|
||||||
|
<summary>
|
||||||
|
未完成裁判任务数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRUnReadOutDto.FinishJudgeTaskCount">
|
||||||
|
<summary>
|
||||||
|
完成裁判任务数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRUnReadOutDto.SuggesteFinishedTime">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRUnReadOutDto.SuggesteFinishedTime">
|
||||||
<summary>
|
<summary>
|
||||||
建议完成时间
|
建议完成时间
|
||||||
|
@ -8122,6 +8320,9 @@
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.UserLogQuery">
|
<member name="T:IRaCIS.Core.Application.ViewModel.UserLogQuery">
|
||||||
<summary>UserLogQuery 列表查询参数模型</summary>
|
<summary>UserLogQuery 列表查询参数模型</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.ViewModel.UserLogAddOrEdit">
|
||||||
|
<summary> UserLogAddOrEdit 列表查询参数模型</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.TirggerTaskInfo.TargetAssessmentIsIUorIC">
|
<member name="P:IRaCIS.Core.Application.ViewModel.TirggerTaskInfo.TargetAssessmentIsIUorIC">
|
||||||
<summary>
|
<summary>
|
||||||
靶病灶是否为IUPD或者ICPD
|
靶病灶是否为IUPD或者ICPD
|
||||||
|
@ -10604,6 +10805,13 @@
|
||||||
<param name="_trialRepository"></param>
|
<param name="_trialRepository"></param>
|
||||||
<returns></returns> vvv
|
<returns></returns> vvv
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetPMClinicalDataToBeDoneList(IRaCIS.Core.Application.Contracts.ReviewerSelectToBeDoneQuery)">
|
||||||
|
<summary>
|
||||||
|
获取PM核对临床数据
|
||||||
|
</summary>
|
||||||
|
<param name="inQuery"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetSPM_ReviewerSelectToBeDoneList(IRaCIS.Core.Application.Contracts.ReviewerSelectToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetSPM_ReviewerSelectToBeDoneList(IRaCIS.Core.Application.Contracts.ReviewerSelectToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||||
<summary>
|
<summary>
|
||||||
SPM 阅片人筛选
|
SPM 阅片人筛选
|
||||||
|
@ -10613,7 +10821,7 @@
|
||||||
<param name="_trialRepository"></param>
|
<param name="_trialRepository"></param>
|
||||||
<returns></returns> vvv
|
<returns></returns> vvv
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetSPMReReadingApprovalToBeDone(IRaCIS.Core.Application.Contracts.ReReadingApprovalToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTaskReReading},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetSPMReReadingApprovalToBeDoneList(IRaCIS.Core.Application.Contracts.ReReadingApprovalToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTaskReReading},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||||
<summary>
|
<summary>
|
||||||
SPM 重阅审批
|
SPM 重阅审批
|
||||||
</summary>
|
</summary>
|
||||||
|
@ -10630,6 +10838,14 @@
|
||||||
<param name="_subjectVisitRepository"></param>
|
<param name="_subjectVisitRepository"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetImageClinicalDataToBeConfirmList(IRaCIS.Core.Application.Contracts.ImageClinicalDataToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||||
|
<summary>
|
||||||
|
临床数据 --CRC 待确认
|
||||||
|
</summary>
|
||||||
|
<param name="inQuery"></param>
|
||||||
|
<param name="_subjectVisitRepository"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetCRCImageQuestionToBeDoneList(IRaCIS.Core.Application.Contracts.ImageQuestionToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetCRCImageQuestionToBeDoneList(IRaCIS.Core.Application.Contracts.ImageQuestionToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||||
<summary>
|
<summary>
|
||||||
CRC影像质疑待处理 --CRC 待办
|
CRC影像质疑待处理 --CRC 待办
|
||||||
|
@ -10696,7 +10912,7 @@
|
||||||
<param name="inQuery"></param>
|
<param name="inQuery"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetMIMMedicalCommentsToBeDoneList(IRaCIS.Core.Application.Contracts.MedicalCommentsToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview})">
|
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetMIMMedicalCommentsToBeDoneList(IRaCIS.Core.Application.Contracts.MedicalCommentsToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial})">
|
||||||
<summary>
|
<summary>
|
||||||
MIM医学反馈
|
MIM医学反馈
|
||||||
</summary>
|
</summary>
|
||||||
|
|
|
@ -459,6 +459,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var haveSignedCount = _readingClinicalDataRepository
|
var haveSignedCount = _readingClinicalDataRepository
|
||||||
.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
|
.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
|
||||||
|
|
||||||
|
|
||||||
|
var readModule = _readModuleRepository.Where(t => t.Id == readingId).FirstOrDefault();
|
||||||
|
//CRC 阅片期自定义结构化录入是否签名
|
||||||
|
bool crcReadModuleSign = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//访视
|
//访视
|
||||||
if (readingCategory == ReadingCategory.Visit)
|
if (readingCategory == ReadingCategory.Visit)
|
||||||
{
|
{
|
||||||
|
@ -478,16 +485,37 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//阅片期
|
//阅片期
|
||||||
else if (readingCategory == ReadingCategory.Global)
|
else if (readingCategory == ReadingCategory.Global)
|
||||||
{
|
{
|
||||||
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead && t.UploadRole == UploadRole.PM).Count();
|
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead && t.UploadRole == UploadRole.PM).Count();
|
||||||
|
|
||||||
|
if (readModule != null)
|
||||||
|
{
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.ImageRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId)) || readModule.IsPMConfirm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 肿瘤学
|
// 肿瘤学
|
||||||
else if (readingCategory == ReadingCategory.Oncology)
|
else if (readingCategory == ReadingCategory.Oncology)
|
||||||
{
|
{
|
||||||
return trialClinicalDataSetList.Any(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead);
|
needSignCount= trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead && t.UploadRole == UploadRole.PM).Count();
|
||||||
|
if (readModule != null)
|
||||||
|
{
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.OncologyRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId)) || readModule.IsPMConfirm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -495,7 +523,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
//可能仅仅CRC 基线 没有PM
|
//可能仅仅CRC 基线 没有PM
|
||||||
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
|
if (needSignCount == haveSignedCount && crcReadModuleSign )
|
||||||
{
|
{
|
||||||
isClinicalDataSign = true;
|
isClinicalDataSign = true;
|
||||||
|
|
||||||
|
|
|
@ -1167,8 +1167,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
}
|
}
|
||||||
|
|
||||||
//基线 且配置了临床数据
|
//基线 且配置了临床数据
|
||||||
if (trialConfig.ClinicalInformationTransmissionEnum != 0 /*&& dbSubjectVisit.IsBaseLine*//*&&dbSubjectVisit.ClinicalDataSignUserId==null*/)
|
//if (trialConfig.ClinicalInformationTransmissionEnum != 0 /*&& dbSubjectVisit.IsBaseLine*//*&&dbSubjectVisit.ClinicalDataSignUserId==null*/)
|
||||||
{
|
//{
|
||||||
|
|
||||||
|
|
||||||
////找到需要确认的PDF 临床数据 如果没有CRC 没有上传 那么就添加一条没有文件的记录
|
////找到需要确认的PDF 临床数据 如果没有CRC 没有上传 那么就添加一条没有文件的记录
|
||||||
|
@ -1231,7 +1231,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//return ResponseOutput.NotOk("没有签名临床数据,不允许提交");
|
//return ResponseOutput.NotOk("没有签名临床数据,不允许提交");
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -367,9 +367,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(s => s.CurrentActionUser.UserName))
|
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(s => s.CurrentActionUser.UserName))
|
||||||
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.PreliminaryAuditUser.UserName))
|
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.PreliminaryAuditUser.UserName))
|
||||||
.ForMember(d => d.ReviewAuditUserName, u => u.MapFrom(s => s.ReviewAuditUser.UserName))
|
.ForMember(d => d.ReviewAuditUserName, u => u.MapFrom(s => s.ReviewAuditUser.UserName))
|
||||||
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.IsBaseLine ? t.PreviousHistoryList.Any() || t.PreviousOtherList.Any()
|
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.PreviousHistoryList.Any() || t.PreviousOtherList.Any()
|
||||||
|| t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
|
|| t.Subject.ClinicalFormList.Any(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == t.Id)
|
||||||
|| t.PreviousSurgeryList.Any() : false))
|
|| t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
|
||||||
|
|| t.PreviousSurgeryList.Any()))
|
||||||
.ForMember(d => d.DicomStudyCount, u => u.MapFrom(t => t.StudyList.Count()))
|
.ForMember(d => d.DicomStudyCount, u => u.MapFrom(t => t.StudyList.Count()))
|
||||||
.ForMember(d => d.NoneDicomStudyCount, u => u.MapFrom(t => t.NoneDicomStudyList.Count(t => t.NoneDicomFileList.Any())));
|
.ForMember(d => d.NoneDicomStudyCount, u => u.MapFrom(t => t.NoneDicomStudyList.Count(t => t.NoneDicomFileList.Any())));
|
||||||
|
|
||||||
|
@ -385,9 +386,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(d => d.MedicalNo, u => u.MapFrom(s => s.Subject.MedicalNo))
|
.ForMember(d => d.MedicalNo, u => u.MapFrom(s => s.Subject.MedicalNo))
|
||||||
.ForMember(d => d.Sex, u => u.MapFrom(s => s.Subject.Sex))
|
.ForMember(d => d.Sex, u => u.MapFrom(s => s.Subject.Sex))
|
||||||
.ForMember(d => d.Age, u => u.MapFrom(t => t.Subject.Age))
|
.ForMember(d => d.Age, u => u.MapFrom(t => t.Subject.Age))
|
||||||
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.IsBaseLine ? t.PreviousHistoryList.Any() || t.PreviousOtherList.Any()
|
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.PreviousHistoryList.Any() || t.PreviousOtherList.Any()
|
||||||
|
|| t.Subject.ClinicalFormList.Any(x=>x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&& x.ReadingId==t.Id)
|
||||||
|| t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
|
|| t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
|
||||||
|| t.PreviousSurgeryList.Any() : false))
|
|| t.PreviousSurgeryList.Any()))
|
||||||
|
|
||||||
//.ForMember(d => d.VisitName, u => u.MapFrom(t =>t.InPlan? t.VisitStage.VisitName : t.VisitName))
|
//.ForMember(d => d.VisitName, u => u.MapFrom(t =>t.InPlan? t.VisitStage.VisitName : t.VisitName))
|
||||||
//.ForMember(d => d.VisitNum, u => u.MapFrom(t => t.InPlan ? t.VisitStage.VisitNum : t.VisitNum))
|
//.ForMember(d => d.VisitNum, u => u.MapFrom(t => t.InPlan ? t.VisitStage.VisitNum : t.VisitNum))
|
||||||
|
|
|
@ -15,6 +15,7 @@ using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using IRaCIS.Core.Application.Service.Reading.Interface;
|
using IRaCIS.Core.Application.Service.Reading.Interface;
|
||||||
|
using IRaCIS.Core.Application.Contracts;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -51,6 +52,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
private readonly IClinicalQuestionService _iClinicalQuestionService;
|
private readonly IClinicalQuestionService _iClinicalQuestionService;
|
||||||
|
|
||||||
|
private readonly IReadingClinicalDataService _iReadingClinicalDataService;
|
||||||
|
|
||||||
|
|
||||||
public ClinicalAnswerService(IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
|
public ClinicalAnswerService(IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
|
||||||
IRepository<SystemClinicalTableQuestion> systemClinicalTableQuestionRepository,
|
IRepository<SystemClinicalTableQuestion> systemClinicalTableQuestionRepository,
|
||||||
|
@ -58,7 +61,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
||||||
IRepository<ClinicalForm> clinicalFormRepository,
|
IRepository<ClinicalForm> clinicalFormRepository,
|
||||||
IRepository<Subject> subjectRepository,
|
IRepository<Subject> subjectRepository,
|
||||||
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
IReadingClinicalDataService iReadingClinicalDataService,
|
||||||
|
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
||||||
IRepository<ReadModule> readModuleRepository,
|
IRepository<ReadModule> readModuleRepository,
|
||||||
IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<ClinicalTableAnswer> clinicalTableAnswerRepository,
|
IRepository<ClinicalTableAnswer> clinicalTableAnswerRepository,
|
||||||
|
@ -78,8 +82,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
_trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository;
|
_trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository;
|
||||||
_systemClinicalQuestionRepository = systemClinicalQuestionRepository;
|
_systemClinicalQuestionRepository = systemClinicalQuestionRepository;
|
||||||
_clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
_clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
||||||
|
_iReadingClinicalDataService = iReadingClinicalDataService;
|
||||||
_clinicalFormRepository = clinicalFormRepository;
|
_clinicalFormRepository = clinicalFormRepository;
|
||||||
this._subjectRepository = subjectRepository;
|
this._subjectRepository = subjectRepository;
|
||||||
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
||||||
this._readModuleRepository = readModuleRepository;
|
this._readModuleRepository = readModuleRepository;
|
||||||
|
@ -87,6 +91,25 @@ namespace IRaCIS.Core.Application.Service
|
||||||
_iClinicalQuestionService = iClinicalQuestionService;
|
_iClinicalQuestionService = iClinicalQuestionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC签名临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> CRCSignClinicalData(CRCSignClinicalDataInDto inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x =>x.Id==inDto.ReadingClinicalDataId, x => new ReadingClinicalData()
|
||||||
|
{
|
||||||
|
IsSign = true,
|
||||||
|
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
||||||
|
});
|
||||||
|
|
||||||
|
await _readingClinicalDataRepository.SaveChangesAsync();
|
||||||
|
return ResponseOutput.Ok(true);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自动添加CRC临床数据
|
/// 自动添加CRC临床数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -109,7 +132,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var clinicalDataList =await _readingClinicalDataRepository
|
var clinicalDataList =await _readingClinicalDataRepository
|
||||||
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
||||||
.Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC).IgnoreAutoIncludes().ToListAsync();
|
.Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC)
|
||||||
|
.Select(x=>new
|
||||||
|
{
|
||||||
|
ClinicalDataTrialSetId=x.ClinicalDataTrialSetId,
|
||||||
|
SubjectId=x.SubjectId,
|
||||||
|
x.ReadingId,
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
List<ReadingClinicalData> readingClinicalDatas = new List<ReadingClinicalData>();
|
List<ReadingClinicalData> readingClinicalDatas = new List<ReadingClinicalData>();
|
||||||
|
|
||||||
|
@ -165,12 +195,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}).ToList());
|
}).ToList());
|
||||||
});
|
});
|
||||||
|
|
||||||
await _readingClinicalDataRepository.AddRangeAsync(readingClinicalDatas);
|
|
||||||
|
await _readingClinicalDataRepository.AddRangeAsync(readingClinicalDatas);
|
||||||
await _readingClinicalDataRepository.SaveChangesAsync();
|
await _readingClinicalDataRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取CRC受试者临床数据
|
/// 获取CRC受试者临床数据
|
||||||
|
@ -178,18 +208,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<List<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto)
|
public async Task<PageOutput<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
//await AutoAddCRCClinical(new AutoAddClinicalInDto()
|
//await AutoAddCRCClinical(new AutoAddClinicalInDto()
|
||||||
//{
|
//{
|
||||||
|
|
||||||
// TrialId = inDto.TrialId
|
// TrialId = inDto.TrialId
|
||||||
//}) ;
|
//}) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var subjects = await _subjectRepository.Where(x => x.TrialId == inDto.TrialId).Select(x => new GetCRCSubjectClinicalResultDto()
|
var subjects = await _subjectRepository.Where(x => x.TrialId == inDto.TrialId).Select(x => new GetCRCSubjectClinicalResultDto()
|
||||||
{
|
{
|
||||||
SubjectId = x.Id,
|
SubjectId = x.Id,
|
||||||
|
@ -197,33 +223,38 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
var clinicalData=await _readingClinicalDataRepository.Where(x=>x.TrialId == inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&&x.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.SubjectVisit)
|
var clinicalData= _readingClinicalDataRepository.Where(x=>x.TrialId == inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&&x.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.SubjectVisit)
|
||||||
.Where(x=>!x.IsSign)
|
.Where(x=>!x.IsSign)
|
||||||
|
.WhereIf(inDto.SubjectId!=null,x=>x.SubjectId==inDto.SubjectId)
|
||||||
|
.WhereIf(inDto.SubjectCode != null, x => x.Subject.Code.Contains(inDto.SubjectCode??string.Empty))
|
||||||
|
.Where(x=> x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject)
|
||||||
.Include(x=>x.ClinicalDataTrialSet).Select(x=>new GetCRCSubjectClinicalOutDto() {
|
.Include(x=>x.ClinicalDataTrialSet).Select(x=>new GetCRCSubjectClinicalOutDto() {
|
||||||
SubjectId=x.SubjectId,
|
SubjectId=x.SubjectId,
|
||||||
SubjectCode=x.Subject.Code,
|
SubjectCode=x.Subject.Code,
|
||||||
TrialId=inDto.TrialId,
|
TrialId=inDto.TrialId,
|
||||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id,
|
ReadingId= x.ReadingId,
|
||||||
|
ReadingClinicalDataId=x.Id,
|
||||||
|
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||||
|
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||||
|
ClinicalUploadType= x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||||
|
BaseLineVisitId= x.Subject.SubjectVisitList.Where(x=>x.IsBaseLine).Select(x=>x.Id).FirstOrDefault(),
|
||||||
|
ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id,
|
||||||
ClinicalDataSetEnName= x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
ClinicalDataSetEnName= x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||||
}).OrderBy(x=>x.SubjectCode).ToListAsync();
|
});
|
||||||
|
|
||||||
// 一次查询报错 分两次写
|
var pageList = await clinicalData.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, string.IsNullOrWhiteSpace(inDto.SortField) ? nameof(GetCRCSubjectClinicalOutDto.SubjectCode) : inDto.SortField, inDto.Asc);
|
||||||
clinicalData.ForEach(x =>
|
// 一次查询报错 分两次写
|
||||||
|
pageList.CurrentPageData.ForEach(x =>
|
||||||
{
|
{
|
||||||
x.ClinicalDataSetEnName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us);
|
x.ClinicalDataSetEnName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
var clinicalFormData = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId).ToListAsync();
|
var clinicalFormData = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId).ToListAsync();
|
||||||
clinicalData.ForEach(n =>
|
pageList.CurrentPageData.ForEach(n =>
|
||||||
{
|
{
|
||||||
n.ClinicalCount = clinicalFormData.Where(y => y.ClinicalDataTrialSetId == n.ClinicalDataTrialSetId && y.SubjectId == n.SubjectId).Count();
|
n.ClinicalCount = clinicalFormData.Where(y => y.ClinicalDataTrialSetId == n.ClinicalDataTrialSetId && y.SubjectId == n.SubjectId).Count();
|
||||||
});
|
});
|
||||||
|
return pageList;
|
||||||
|
|
||||||
return clinicalData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -238,7 +269,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
result.AnswerList = new List<Dictionary<string, string>>();
|
result.AnswerList = new List<Dictionary<string, string>>();
|
||||||
result.QuestionList=await _trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId==inDto.ClinicalDataTrialSetId
|
result.QuestionList=await _trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId==inDto.ClinicalDataTrialSetId
|
||||||
&&x.ClinicalQuestionType!= ReadingQestionType.Group
|
&&x.ClinicalQuestionType!= ReadingQestionType.Group
|
||||||
&& x.ClinicalQuestionType != ReadingQestionType.Table).OrderBy(x=>x.ShowOrder)
|
&& x.ClinicalQuestionType != ReadingQestionType.Table).OrderByDescending(x=>x.IsCheckDate).ThenBy(x=>x.ShowOrder)
|
||||||
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
var answers = await _clinicalQuestionAnswerRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
var answers = await _clinicalQuestionAnswerRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
||||||
|
@ -328,8 +359,24 @@ namespace IRaCIS.Core.Application.Service
|
||||||
TrialId= inDto.TrialId,
|
TrialId= inDto.TrialId,
|
||||||
Id = inDto.ClinicalFormId ?? NewId.NextGuid(),
|
Id = inDto.ClinicalFormId ?? NewId.NextGuid(),
|
||||||
ReadingId = inDto.ReadingId,
|
ReadingId = inDto.ReadingId,
|
||||||
VisitId = inDto.VisitId,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (inDto.ClinicalFormId!=null&&(await _readModuleCriterionFromRepository.AnyAsync(x => x.ClinicalFormId == inDto.ClinicalFormId.Value)))
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException("当前表单已确认,无法修改!");
|
||||||
|
}
|
||||||
|
|
||||||
|
var existsClinical = await _clinicalFormRepository.Where(x =>
|
||||||
|
x.SubjectId == inDto.SubjectId
|
||||||
|
&& x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId
|
||||||
|
).WhereIf(inDto.ReadingId != null, x => x.ReadingId == inDto.ReadingId)
|
||||||
|
.Where(x => x.ClinicalDataTrialSet.UploadRole != UploadRole.CRC && !(x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead
|
||||||
|
|| x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)).AnyAsync();
|
||||||
|
|
||||||
|
if (existsClinical)
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException("已经添加过临床数据,不允许多次添加!");
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var checkDateQuestionId = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.ClinicalDataTrialSetId && x.IsCheckDate).Select(x => x.Id).FirstNotNullAsync();
|
var checkDateQuestionId = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.ClinicalDataTrialSetId && x.IsCheckDate).Select(x => x.Id).FirstNotNullAsync();
|
||||||
|
@ -343,7 +390,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
if (clinicalForm.CheckDate != null)
|
if (clinicalForm.CheckDate != null)
|
||||||
{
|
{
|
||||||
if (await _readModuleRepository.AnyAsync(x => x.SubjectVisit.LatestScanDate <= clinicalForm.CheckDate && x.IsCRCConfirm))
|
if (await _readModuleRepository.AnyAsync(x =>x.SubjectId== inDto.SubjectId&& x.SubjectVisit.LatestScanDate <= clinicalForm.CheckDate && x.IsCRCConfirm))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("无法添加和修改当前日期的临床数据,因为CRC已经确认!");
|
throw new BusinessValidationFailedException("无法添加和修改当前日期的临床数据,因为CRC已经确认!");
|
||||||
}
|
}
|
||||||
|
@ -404,7 +451,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
await _clinicalAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
await _clinicalAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
||||||
await _clinicalTableAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
await _clinicalTableAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
||||||
}
|
}
|
||||||
|
//if(inDto.ReadingId!=null)
|
||||||
|
//{
|
||||||
|
// await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ReadingId == inDto.ReadingId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId, x => new ReadingClinicalData()
|
||||||
|
// {
|
||||||
|
// IsSign = true
|
||||||
|
// });
|
||||||
|
//}
|
||||||
await _clinicalFormRepository.AddAsync(clinicalForm);
|
await _clinicalFormRepository.AddAsync(clinicalForm);
|
||||||
await _clinicalQuestionAnswerRepository.AddRangeAsync(clinicalQuestionAnswers);
|
await _clinicalQuestionAnswerRepository.AddRangeAsync(clinicalQuestionAnswers);
|
||||||
await _clinicalAnswerRowInfoRepository.AddRangeAsync(clinicalAnswerRowInfos);
|
await _clinicalAnswerRowInfoRepository.AddRangeAsync(clinicalAnswerRowInfos);
|
||||||
|
@ -413,6 +466,49 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.Ok(true);
|
return ResponseOutput.Ok(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除表单数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> DeleteClinicalForm(DeleteClinicalFormInDto inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (await _readModuleCriterionFromRepository.AnyAsync(x => x.ClinicalFormId == inDto.ClinicalFormId))
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException("当前表单已确认,无法删除!");
|
||||||
|
}
|
||||||
|
|
||||||
|
await _clinicalFormRepository.BatchDeleteNoTrackingAsync(x => x.Id == inDto.ClinicalFormId);
|
||||||
|
await _clinicalQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
||||||
|
await _clinicalAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
||||||
|
await _clinicalTableAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
||||||
|
return ResponseOutput.Ok(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取PM待确认列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<PageOutput<GetCRCConfirmListOutDto>> GetPMConfirmList(GetPMConfirmListInDto inDto)
|
||||||
|
{
|
||||||
|
return await GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
|
{
|
||||||
|
TrialId = inDto.TrialId,
|
||||||
|
IsCRCConfirm = true,
|
||||||
|
IsPMConfirm = false,
|
||||||
|
PageIndex = inDto.PageIndex,
|
||||||
|
PageSize = inDto.PageSize,
|
||||||
|
Asc = inDto.Asc,
|
||||||
|
SortField = inDto.SortField,
|
||||||
|
TrialReadingCriterionId = inDto.TrialReadingCriterionId
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取CRC确认列表
|
/// 获取CRC确认列表
|
||||||
|
@ -420,66 +516,112 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<List<GetCRCConfirmListOutDto>> GetCRCConfirmList(GetCRCConfirmListInDto inDto)
|
public async Task<PageOutput<GetCRCConfirmListOutDto>> GetCRCConfirmList(GetCRCConfirmListInDto inDto)
|
||||||
{
|
{
|
||||||
List<GetCRCConfirmListOutDto> result = await _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
if (inDto.ReadModuleId != null)
|
||||||
.WhereIf(inDto.ReadModuleId!=null,x=>x.Id==inDto.ReadModuleId)
|
{
|
||||||
.Select(x => new GetCRCConfirmListOutDto()
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
{
|
inDto.TrialReadingCriterionId = readModule.TrialReadingCriterionId;
|
||||||
SubjectId= x.SubjectId,
|
}
|
||||||
IsCRCConfirm = x.IsCRCConfirm,
|
var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
||||||
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
.WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId)
|
||||||
ReadingSetType = x.ReadingSetType,
|
.WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm)
|
||||||
IsPMConfirm = x.IsPMConfirm,
|
.WhereIf(inDto.IsPMConfirm != null, x => x.IsPMConfirm == inDto.IsPMConfirm)
|
||||||
SubjectCode=x.Subject.Code,
|
.WhereIf(inDto.SubjectCode != null, x => x.Subject.Code.Contains(inDto.SubjectCode??string.Empty))
|
||||||
ReadModuleId = x.Id,
|
.WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
}).OrderBy(x => x.LatestScanDate).ToListAsync();
|
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
||||||
|
.WhereIf(inDto.StartTime != null, x => x.SubjectVisit.LatestScanDate >= inDto.StartTime)
|
||||||
|
.WhereIf(inDto.EndTime != null, x => x.SubjectVisit.LatestScanDate <= inDto.EndTime)
|
||||||
|
.Select(x => new GetCRCConfirmListOutDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
SubjectId = x.SubjectId,
|
||||||
|
IsNotNeedPMConfirm=x.IsNotNeedPMConfirm,
|
||||||
|
IsCRCConfirm = x.IsCRCConfirm,
|
||||||
|
IsCRCApplicationRevoke=x.IsCRCApplicationRevoke,
|
||||||
|
VisitBlindName=x.SubjectVisit.BlindName,
|
||||||
|
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
||||||
|
ReadingSetType = x.ReadingSetType,
|
||||||
|
IsPMConfirm = x.IsPMConfirm,
|
||||||
|
SubjectCode = x.Subject.Code,
|
||||||
|
ReadModuleId = x.Id,
|
||||||
|
ModuleName=x.ModuleName,
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var result = await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, new string[2] { "SubjectCode asc", "LatestScanDate asc" });
|
||||||
|
|
||||||
var formList = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId)
|
var formList = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId)
|
||||||
.Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
|
.Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
|
||||||
|
.WhereIf(inDto.TrialReadingCriterionId!=null, x=>x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(y=>y.TrialReadingCriterionId== inDto.TrialReadingCriterionId))
|
||||||
.Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)
|
.Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)
|
||||||
.Include(x=>x.ClinicalDataTrialSet)
|
.Include(x=>x.ClinicalDataTrialSet)
|
||||||
.Select(x => new CRCClinicalForm
|
.Select(x => new CRCClinicalForm
|
||||||
{
|
{
|
||||||
|
SubjectId=x.SubjectId,
|
||||||
CheckDate = x.CheckDate,
|
CheckDate = x.CheckDate,
|
||||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||||
ClinicalFormId = x.Id,
|
ClinicalFormId = x.Id,
|
||||||
ClinicalDataSetName=x.ClinicalDataTrialSet.ClinicalDataSetName,
|
ClinicalDataTrialSetId= x.ClinicalDataTrialSet.Id,
|
||||||
|
ClinicalDataSetName =x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||||
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
|
IsHaveTableQuestion=x.ClinicalDataTrialSet.TrialClinicalQuestionList.Any(y=>y.ClinicalQuestionType== ReadingQestionType.Table),
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId).Include(x=>x.ClinicalForm).Include(x=>x.ClinicalForm.ClinicalDataTrialSet).ToListAsync();
|
var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId
|
||||||
result.ForEach(x =>
|
&&x.ClinicalForm.ClinicalDataTrialSet.UploadRole== UploadRole.CRC
|
||||||
|
&&(x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataLevel==ClinicalLevel.ImageRead|| x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead))
|
||||||
|
.Select(x => new GetCRCBeConfirm
|
||||||
|
{
|
||||||
|
CheckDate = x.ClinicalForm.CheckDate ?? default(DateTime),
|
||||||
|
ClinicalDataSetName = x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||||
|
ClinicalDataSetEnName = x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
|
ClinicalFormId = x.ClinicalFormId,
|
||||||
|
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSet.Id,
|
||||||
|
ReadModuleId=x.ReadModuleId,
|
||||||
|
IsHaveTableQuestion=x.ClinicalForm.ClinicalDataTrialSet.TrialClinicalQuestionList.Any(y => y.ClinicalQuestionType == ReadingQestionType.Table)
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
result.CurrentPageData.ForEach(x =>
|
||||||
{
|
{
|
||||||
if (x.IsCRCConfirm)
|
if (x.IsCRCConfirm)
|
||||||
{
|
{
|
||||||
x.ClinicalFormIdList = confirmList.Where(y => y.ReadModuleId == x.ReadModuleId).Select(y=>new GetCRCBeConfirmListOutDto() {
|
x.ClinicalFormList = confirmList.Where(y => y.ReadModuleId == x.ReadModuleId).Select(y=>new GetCRCBeConfirmListOutDto() {
|
||||||
CheckDate = y.ClinicalForm.CheckDate??default(DateTime),
|
CheckDate = y.CheckDate,
|
||||||
ClinicalDataSetName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetName,
|
ClinicalDataSetName= y.ClinicalDataSetName.LanguageName(y.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
ClinicalDataSetEnName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
ClinicalDataSetEnName= y.ClinicalDataSetEnName,
|
||||||
ClinicalFormId=y.ClinicalFormId,
|
ClinicalFormId=y.ClinicalFormId,
|
||||||
|
ClinicalDataTrialSetId=y.ClinicalDataTrialSetId,
|
||||||
|
IsHaveTableQuestion=y.IsHaveTableQuestion,
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (x.ReadingSetType == ReadingSetType.ImageReading)
|
if (x.ReadingSetType == ReadingSetType.ImageReading)
|
||||||
{
|
{
|
||||||
x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.ImageRead&&y.CheckDate <= x.LatestScanDate)
|
x.ClinicalFormList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.ImageRead&&y.CheckDate <= x.LatestScanDate&&y.SubjectId==x.SubjectId)
|
||||||
|
|
||||||
.Select(y => new GetCRCBeConfirmListOutDto()
|
.Select(y => new GetCRCBeConfirmListOutDto()
|
||||||
{
|
{
|
||||||
CheckDate = y.CheckDate ?? default(DateTime),
|
CheckDate = y.CheckDate ?? default(DateTime),
|
||||||
ClinicalDataSetName = y.ClinicalDataSetName,
|
ClinicalDataSetName = y.ClinicalDataSetName.LanguageName(y.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
ClinicalDataSetEnName = y.ClinicalDataSetEnName,
|
ClinicalDataSetEnName = y.ClinicalDataSetEnName,
|
||||||
ClinicalFormId = y.ClinicalFormId,
|
ClinicalFormId = y.ClinicalFormId,
|
||||||
|
ClinicalDataTrialSetId = y.ClinicalDataTrialSetId,
|
||||||
|
IsHaveTableQuestion = y.IsHaveTableQuestion,
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.OncologyRead&&y.CheckDate <= x.LatestScanDate)
|
x.ClinicalFormList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.OncologyRead&&y.CheckDate <= x.LatestScanDate && y.SubjectId == x.SubjectId)
|
||||||
.Select(y => new GetCRCBeConfirmListOutDto()
|
.Select(y => new GetCRCBeConfirmListOutDto()
|
||||||
{
|
{
|
||||||
CheckDate = y.CheckDate ?? default(DateTime),
|
CheckDate = y.CheckDate ?? default(DateTime),
|
||||||
ClinicalDataSetName = y.ClinicalDataSetName,
|
ClinicalDataSetName = y.ClinicalDataSetName.LanguageName(y.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
ClinicalDataSetEnName = y.ClinicalDataSetEnName,
|
ClinicalDataSetEnName = y.ClinicalDataSetEnName,
|
||||||
ClinicalFormId = y.ClinicalFormId,
|
ClinicalFormId = y.ClinicalFormId,
|
||||||
|
ClinicalDataTrialSetId = y.ClinicalDataTrialSetId,
|
||||||
|
IsHaveTableQuestion = y.IsHaveTableQuestion,
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -498,20 +640,120 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var result = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
var result = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
{
|
{
|
||||||
ReadModuleId = inDto.ReadModuleId,
|
ReadModuleId = inDto.ReadModuleId,
|
||||||
TrialId = inDto.TrialId
|
TrialId = inDto.TrialId,
|
||||||
})).SelectMany(x => x.ClinicalFormIdList).ToList();
|
PageIndex=1,
|
||||||
|
PageSize=9999,
|
||||||
|
|
||||||
|
})).CurrentPageData.SelectMany(x => x.ClinicalFormList).ToList();
|
||||||
|
return result.OrderBy(x => x.ClinicalDataSetName).ThenBy(x => x.CheckDate).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
result.ForEach(x => {
|
|
||||||
|
|
||||||
x.ClinicalDataSetName = _userInfo.IsEn_Us ? x.ClinicalDataSetEnName : x.ClinicalDataSetName;
|
/// <summary>
|
||||||
|
/// 获取临床数据表格信息 查看没有表格问题的列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<(List<GetClinicalTableListOutDto>,object)> GetClinicalTableList(GetClinicalTableListInDto inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
var readModule=await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
var confirmList = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
|
{
|
||||||
|
ReadModuleId = inDto.ReadModuleId,
|
||||||
|
TrialId = inDto.TrialId,
|
||||||
|
PageIndex = 1,
|
||||||
|
PageSize = 9999,
|
||||||
|
|
||||||
|
})).CurrentPageData.SelectMany(x => x.ClinicalFormList).ToList();
|
||||||
|
|
||||||
|
var clinicalDataTrialSetIds = confirmList.Select(x => x.ClinicalDataTrialSetId).Distinct().ToList();
|
||||||
|
var clinicalFormIds = confirmList.Select(x => x.ClinicalFormId).ToList();
|
||||||
|
|
||||||
|
var questionList = await _trialClinicalQuestionRepository.Where(x => clinicalDataTrialSetIds.Contains( x.TrialClinicalId)
|
||||||
|
&& x.ClinicalQuestionType != ReadingQestionType.Group
|
||||||
|
&& x.ClinicalQuestionType != ReadingQestionType.Table).OrderBy(x=>x.TrialClinicalId).ThenBy(x => x.ShowOrder)
|
||||||
|
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
var answers = await _clinicalQuestionAnswerRepository.Where(x => clinicalFormIds.Contains(x.ClinicalFormId))
|
||||||
|
.Select(x => new
|
||||||
|
{
|
||||||
|
x.ClinicalDataTrialSetId,
|
||||||
|
x.ClinicalFormId,
|
||||||
|
x.ClinicalForm.CheckDate,
|
||||||
|
x.QuestionId,
|
||||||
|
x.Answer
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
List<GetClinicalTableListOutDto> result = new List<GetClinicalTableListOutDto>();
|
||||||
|
clinicalDataTrialSetIds.ForEach(x => {
|
||||||
|
GetClinicalTableListOutDto dto = new GetClinicalTableListOutDto();
|
||||||
|
dto.ModuleName = readModule.ModuleName;
|
||||||
|
dto.ClinicalDataSetName = confirmList.Where(y => y.ClinicalDataTrialSetId == x).Select(y => y.ClinicalDataSetName).First();
|
||||||
|
dto.QuestionList = questionList.Where(y => y.TrialClinicalId == x).OrderBy(y => y.ShowOrder).ToList();
|
||||||
|
dto.AnswerList = new List<Dictionary<string, string>>();
|
||||||
|
var ClinicalFormIds= answers.Where(y => y.ClinicalDataTrialSetId == x).OrderBy(x => x.CheckDate).Select(x => x.ClinicalFormId).Distinct().ToList();
|
||||||
|
ClinicalFormIds.ForEach(z =>
|
||||||
|
{
|
||||||
|
var dic = answers.Where(y => y.ClinicalFormId == z).OrderBy(y => y.CheckDate).ToDictionary(x => x.QuestionId.ToString(), x => x.Answer);
|
||||||
|
dic.Add("ClinicalFormId", z.ToString());
|
||||||
|
dic.Add("TrialId", inDto.TrialId.ToString());
|
||||||
|
dic.Add("SubjectId", readModule.SubjectId.ToString());
|
||||||
|
dic.Add("ClinicalDataTrialSetId", x.ToString());
|
||||||
|
|
||||||
|
dto.AnswerList.Add(dic);
|
||||||
|
|
||||||
|
});
|
||||||
|
result.Add(dto);
|
||||||
|
});
|
||||||
|
return (result, new
|
||||||
|
{
|
||||||
|
readModule.ModuleName,
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取临床数据表格信息 查看有表格问题的列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<(List<GetClinicalDateListOutDto>,object)> GetClinicalDateList(GetCRCBeConfirmListInDto inDto)
|
||||||
|
{
|
||||||
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
|
var confirmList = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
|
{
|
||||||
|
ReadModuleId = inDto.ReadModuleId,
|
||||||
|
TrialId = inDto.TrialId,
|
||||||
|
PageIndex = 1,
|
||||||
|
PageSize = 9999,
|
||||||
|
|
||||||
|
})).CurrentPageData.SelectMany(x => x.ClinicalFormList).ToList();
|
||||||
|
|
||||||
|
var clinicalDataTrialSetIds = confirmList.Select(x => x.ClinicalDataTrialSetId).Distinct().ToList();
|
||||||
|
|
||||||
|
List<GetClinicalDateListOutDto> result = new List<GetClinicalDateListOutDto>();
|
||||||
|
|
||||||
|
clinicalDataTrialSetIds.ForEach(x =>
|
||||||
|
{
|
||||||
|
|
||||||
|
result.Add(new GetClinicalDateListOutDto()
|
||||||
|
{
|
||||||
|
ClinicalDataSetName = confirmList.Where(y => y.ClinicalDataTrialSetId == x).Select(y => y.ClinicalDataSetName).First(),
|
||||||
|
DateList = confirmList.Where(y => y.ClinicalDataTrialSetId == x).ToList()
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return result.OrderBy(x => x.ClinicalDataSetName).ThenBy(x => x.CheckDate).ToList();
|
return (result,new {
|
||||||
|
readModule.ModuleName,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC 确认临床数据
|
/// CRC 确认临床数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -520,22 +762,32 @@ namespace IRaCIS.Core.Application.Service
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> CRCConfirmClinical(CRCConfirmClinicalInDto inDto)
|
public async Task<IResponseOutput> CRCConfirmClinical(CRCConfirmClinicalInDto inDto)
|
||||||
{
|
{
|
||||||
var dataList =await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
|
||||||
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
var confirmlist = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
{
|
{
|
||||||
TrialId = inDto.TrialId
|
TrialId = inDto.TrialId,
|
||||||
});
|
SubjectId= readModule.SubjectId,
|
||||||
|
IsCRCConfirm=false,
|
||||||
|
TrialReadingCriterionId = readModule.TrialReadingCriterionId,
|
||||||
|
//ReadModuleId = inDto.ReadModuleId,
|
||||||
|
PageIndex =1,
|
||||||
|
PageSize=9999,
|
||||||
|
})).CurrentPageData.ToList();
|
||||||
|
|
||||||
var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First();
|
var presentData = confirmlist.Where(x => x.ReadModuleId == inDto.ReadModuleId).First();
|
||||||
var confirmlist= dataList.Where(x =>(x.LatestScanDate < presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType)
|
|
||||||
|| x.ReadModuleId == presentData.ReadModuleId).Where(x => !x.IsCRCConfirm).ToList();
|
|
||||||
|
|
||||||
|
confirmlist = confirmlist.Where(x => x.LatestScanDate <= presentData.LatestScanDate).ToList();
|
||||||
|
|
||||||
|
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== inDto.ReadModuleId);
|
||||||
List<ReadModuleCriterionFrom> needAddList = new List<ReadModuleCriterionFrom>()
|
List<ReadModuleCriterionFrom> needAddList = new List<ReadModuleCriterionFrom>()
|
||||||
{
|
{
|
||||||
|
|
||||||
};
|
};
|
||||||
confirmlist.ForEach(x =>
|
confirmlist.ForEach(x =>
|
||||||
{
|
{
|
||||||
x.ClinicalFormIdList.ForEach(y =>
|
x.ClinicalFormList.ForEach(y =>
|
||||||
{
|
{
|
||||||
needAddList.Add(new ReadModuleCriterionFrom()
|
needAddList.Add(new ReadModuleCriterionFrom()
|
||||||
{
|
{
|
||||||
|
@ -547,16 +799,21 @@ namespace IRaCIS.Core.Application.Service
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
var readModuleIds = confirmlist.Select(x => x.ReadModuleId).ToList();
|
foreach (var item in confirmlist)
|
||||||
|
{
|
||||||
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x =>x.Id==item.ReadModuleId , x => new ReadModule()
|
||||||
|
{
|
||||||
|
IsCRCConfirm = true,
|
||||||
|
IsPMConfirm=item.ClinicalFormList.Count()==0?true:false,
|
||||||
|
IsNotNeedPMConfirm= item.ClinicalFormList.Count() == 0 ? true : false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => readModuleIds.Contains(x.Id),x=>new ReadModule() {
|
|
||||||
IsCRCConfirm=true
|
|
||||||
});
|
|
||||||
await _readModuleCriterionFromRepository.AddRangeAsync(needAddList);
|
await _readModuleCriterionFromRepository.AddRangeAsync(needAddList);
|
||||||
|
|
||||||
await _readModuleCriterionFromRepository.SaveChangesAsync();
|
await _readModuleCriterionFromRepository.SaveChangesAsync();
|
||||||
|
await _iReadingClinicalDataService.DealVisiTaskClinicalDataSignedAsync(inDto.TrialId, inDto.SubjectId, inDto.ReadModuleId, false, readModule.TrialReadingCriterionId);
|
||||||
return ResponseOutput.Ok(true);
|
return ResponseOutput.Ok(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -567,14 +824,20 @@ namespace IRaCIS.Core.Application.Service
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto)
|
public async Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto)
|
||||||
{
|
{
|
||||||
var dataList = await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
|
||||||
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
|
var dataList = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
{
|
{
|
||||||
TrialId = inDto.TrialId
|
TrialId = inDto.TrialId,
|
||||||
});
|
SubjectId = readModule.SubjectId,
|
||||||
|
TrialReadingCriterionId = readModule.TrialReadingCriterionId,
|
||||||
|
PageIndex = 1,
|
||||||
|
PageSize = 9999,
|
||||||
|
})).CurrentPageData;
|
||||||
|
|
||||||
var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First();
|
var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First();
|
||||||
|
|
||||||
if (dataList.Any(x => x.IsPMConfirm && x.LatestScanDate > presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType))
|
if (dataList.Any(x => x.IsCRCConfirm && x.LatestScanDate > presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("当前数据并非最后一条确认信息,无法取消!");
|
throw new BusinessValidationFailedException("当前数据并非最后一条确认信息,无法取消!");
|
||||||
}
|
}
|
||||||
|
@ -584,17 +847,28 @@ namespace IRaCIS.Core.Application.Service
|
||||||
throw new BusinessValidationFailedException("PM已确认,无法取消!");
|
throw new BusinessValidationFailedException("PM已确认,无法取消!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (presentData.IsNotNeedPMConfirm)
|
||||||
|
{
|
||||||
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId == x.Id, x => new ReadModule()
|
||||||
|
{
|
||||||
|
IsPMConfirm = false,
|
||||||
|
IsCRCConfirm = false,
|
||||||
|
IsNotNeedPMConfirm = false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId == x.Id, x => new ReadModule()
|
||||||
|
{
|
||||||
|
IsCRCApplicationRevoke = true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId==x.Id, x => new ReadModule()
|
//await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== presentData.ReadModuleId);
|
||||||
{
|
|
||||||
IsCRCConfirm = false
|
|
||||||
});
|
|
||||||
|
|
||||||
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== presentData.ReadModuleId);
|
|
||||||
|
|
||||||
await _readModuleCriterionFromRepository.SaveChangesAsync();
|
await _readModuleCriterionFromRepository.SaveChangesAsync();
|
||||||
|
return ResponseOutput.Ok(true);
|
||||||
return ResponseOutput.Ok(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -609,15 +883,46 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var readModuleData = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
var readModuleData = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
if (!readModuleData.IsCRCConfirm)
|
if (!readModuleData.IsCRCConfirm)
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("CRC还未确认数据,PM无法确认");
|
throw new BusinessValidationFailedException("CRC还未确认数据,PM无法操作");
|
||||||
}
|
}
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
if (readModuleData.IsCRCApplicationRevoke && inDto.IsConfirm)
|
||||||
{
|
{
|
||||||
IsPMConfirm = false
|
throw new BusinessValidationFailedException("CRC正在申请退回,PM无法确认");
|
||||||
});
|
}
|
||||||
|
|
||||||
await _readModuleRepository.SaveChangesAsync();
|
if (!readModuleData.IsCRCApplicationRevoke && !inDto.IsConfirm)
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException("CRC未申请退回,PM无法撤销");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inDto.IsConfirm)
|
||||||
|
{
|
||||||
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
||||||
|
{
|
||||||
|
IsPMConfirm = true,
|
||||||
|
IsClinicalDataBlind=inDto.IsClinicalDataBlind,
|
||||||
|
IsClinicalDataComplete=inDto.IsClinicalDataComplete,
|
||||||
|
});
|
||||||
|
await _readModuleRepository.SaveChangesAsync();
|
||||||
|
await _iReadingClinicalDataService.DealVisiTaskClinicalDataSignedAsync(inDto.TrialId, inDto.SubjectId, inDto.ReadModuleId, false, readModuleData.TrialReadingCriterionId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
||||||
|
{
|
||||||
|
IsCRCConfirm = false,
|
||||||
|
IsCRCApplicationRevoke=false,
|
||||||
|
});
|
||||||
|
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== inDto.ReadModuleId);
|
||||||
|
|
||||||
|
await _readModuleRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return ResponseOutput.Ok(true);
|
return ResponseOutput.Ok(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,8 +66,11 @@ namespace IRaCIS.Application.Services
|
||||||
&& x.ClinicalUploadType == ClinicalUploadType.Structuring && x.UploadRole == UploadRole.CRC
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring && x.UploadRole == UploadRole.CRC
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (_systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId).Count() == 0)
|
||||||
if (_systemClinicalQuestionRepository.Where(x => isNeedVerify&& x.SystemClinicalId == inDto.SystemClinicalId && x.IsCheckDate).Count() != 1)
|
{
|
||||||
|
throw new BusinessValidationFailedException("当前临床数据未配置问题,请先配置问题之后再应用");
|
||||||
|
}
|
||||||
|
if (isNeedVerify&&_systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.IsCheckDate).Count() != 1)
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]);
|
throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]);
|
||||||
|
|
||||||
|
@ -98,7 +101,12 @@ namespace IRaCIS.Application.Services
|
||||||
&& x.ClinicalUploadType == ClinicalUploadType.Structuring && x.UploadRole == UploadRole.CRC
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring && x.UploadRole == UploadRole.CRC
|
||||||
);
|
);
|
||||||
|
|
||||||
if (_trialClinicalQuestionRepository.Where(x => isNeedVerify&& x.TrialClinicalId == inDto.TrialClinicalId && x.IsCheckDate).Count() != 1)
|
if (_trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId).Count() == 0)
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException("当前临床数据未配置问题,请先配置问题之后再应用");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isNeedVerify&&_trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.IsCheckDate).Count() != 1)
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]);
|
throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]);
|
||||||
|
|
||||||
|
@ -136,6 +144,8 @@ namespace IRaCIS.Application.Services
|
||||||
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
|
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
|
||||||
.Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName||x.ClinicalDataSetEnName==indto.ClinicalDataSetEnName);
|
.Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName||x.ClinicalDataSetEnName==indto.ClinicalDataSetEnName);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (await existsQuery.AnyAsync())
|
if (await existsQuery.AnyAsync())
|
||||||
{
|
{
|
||||||
//---存在同类型的临床数据,操作失败
|
//---存在同类型的临床数据,操作失败
|
||||||
|
@ -219,6 +229,10 @@ namespace IRaCIS.Application.Services
|
||||||
//---存在同类型的临床数据,操作失败
|
//---存在同类型的临床数据,操作失败
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalDataSet_DupTypeFail"]);
|
return ResponseOutput.NotOk(_localizer["ClinicalDataSet_DupTypeFail"]);
|
||||||
}
|
}
|
||||||
|
if (indto.Id != null && indto.IsApply == null)
|
||||||
|
{
|
||||||
|
indto.IsApply = await _clinicalDataTrialSetRepository.Where(x => x.Id == indto.Id).Select(x => x.IsApply).FirstOrDefaultAsync();
|
||||||
|
}
|
||||||
|
|
||||||
//indto.CriterionEnumListStr = $"|{String.Join('|', indto.CriterionEnumList)}|";
|
//indto.CriterionEnumListStr = $"|{String.Join('|', indto.CriterionEnumList)}|";
|
||||||
|
|
||||||
|
|
|
@ -118,10 +118,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
public async Task<(List<ClinicalQuestionPreviewDto>, bool)> GetSystemClinicalQuestionPreview(GetSystemClinicalQuestionPreviewDto inDto)
|
public async Task<(List<ClinicalQuestionPreviewDto>, bool)> GetSystemClinicalQuestionPreview(GetSystemClinicalQuestionPreviewDto inDto)
|
||||||
{
|
{
|
||||||
var questions = await _systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId)
|
var questions = await _systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId)
|
||||||
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||||
|
|
||||||
var tableQuestions= await _systemClinicalTableQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId)
|
var tableQuestions= await _systemClinicalTableQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId)
|
||||||
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList();
|
var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList();
|
||||||
|
@ -144,13 +144,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
public async Task<(List<ClinicalQuestionPreviewDto>, bool)> GetTrialClinicalQuestionPreview(GetTrialClinicalQuestionPreviewDto inDto)
|
public async Task<(List<ClinicalQuestionPreviewDto>, bool)> GetTrialClinicalQuestionPreview(GetTrialClinicalQuestionPreviewDto inDto)
|
||||||
{
|
{
|
||||||
var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
||||||
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ToListAsync();
|
||||||
|
|
||||||
var tableQuestions = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
var tableQuestions = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
||||||
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList();
|
var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).OrderBy(x => x.ShowOrder).ToList();
|
||||||
|
|
||||||
result.ForEach(x =>
|
result.ForEach(x =>
|
||||||
{
|
{
|
||||||
|
@ -170,7 +170,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="tableQuestions"></param>
|
/// <param name="tableQuestions"></param>
|
||||||
public void FindChildQuestion(ClinicalQuestionPreviewDto item, List<ClinicalQuestionPreviewDto> questions, List<ClinicalTablePreviewDto> tableQuestions,List<ClinicalFormQuestionAnswer> answers, List<ClinicalFormTableQuestionAnswer> tableAnswers)
|
public void FindChildQuestion(ClinicalQuestionPreviewDto item, List<ClinicalQuestionPreviewDto> questions, List<ClinicalTablePreviewDto> tableQuestions,List<ClinicalFormQuestionAnswer> answers, List<ClinicalFormTableQuestionAnswer> tableAnswers)
|
||||||
{
|
{
|
||||||
item.Childrens = questions.Where(x => (x.ParentId == item.Id)||(x.GroupId== item.Id&&x.ParentId==null)).ToList();
|
item.Childrens = questions.Where(x => (x.ParentId == item.Id)||(x.GroupId== item.Id&&x.ParentId==null)).OrderBy(x => x.ShowOrder).ToList();
|
||||||
|
|
||||||
item.RelationQuestions = questions.Where(x => x.RelevanceId == item.Id).ToList();
|
item.RelationQuestions = questions.Where(x => x.RelevanceId == item.Id).ToList();
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).OrderBy(x=>x.ShowOrder).ToList();
|
item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).OrderBy(x=>x.ShowOrder).OrderBy(x => x.ShowOrder).ToList();
|
||||||
|
|
||||||
item.RelationQuestions.ForEach(x => {
|
item.RelationQuestions.ForEach(x => {
|
||||||
this.FindChildQuestion(x, questions, tableQuestions, answers, tableAnswers);
|
this.FindChildQuestion(x, questions, tableQuestions, answers, tableAnswers);
|
||||||
|
@ -228,9 +228,24 @@ namespace IRaCIS.Core.Application.Service
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> AddOrUpdateTrialClinicalQuestion(TrialClinicalQuestionDto inDto)
|
public async Task<IResponseOutput> AddOrUpdateTrialClinicalQuestion(TrialClinicalQuestionDto inDto)
|
||||||
{
|
{
|
||||||
if (await _trialClinicalQuestionRepository.AnyAsync(x =>x.TrialClinicalId==inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
if (inDto.IsVerify)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"],string.Empty,ApiResponseCodeEnum.NeedTips);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.IsCheckDate == inDto.IsCheckDate&&inDto.IsCheckDate))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("已经添加过类型为检查日期的问题!");
|
||||||
}
|
}
|
||||||
|
|
||||||
var entity = await _trialClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _trialClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
|
@ -293,6 +308,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
var systemClinicalQuestionQueryable = _systemClinicalQuestionRepository
|
var systemClinicalQuestionQueryable = _systemClinicalQuestionRepository
|
||||||
|
.Where(x=>x.SystemClinicalId==inQuery.SystemClinicalId)
|
||||||
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName))
|
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName))
|
||||||
.ProjectTo<SystemClinicalQuestionDto>(_mapper.ConfigurationProvider);
|
.ProjectTo<SystemClinicalQuestionDto>(_mapper.ConfigurationProvider);
|
||||||
var pageList = await systemClinicalQuestionQueryable
|
var pageList = await systemClinicalQuestionQueryable
|
||||||
|
@ -311,9 +327,22 @@ namespace IRaCIS.Core.Application.Service
|
||||||
public async Task<IResponseOutput> AddOrUpdateSystemClinicalQuestion(SystemClinicalQuestionDto inDto)
|
public async Task<IResponseOutput> AddOrUpdateSystemClinicalQuestion(SystemClinicalQuestionDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
if (inDto.IsVerify)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
|
}
|
||||||
|
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.IsCheckDate == inDto.IsCheckDate && inDto.IsCheckDate))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("已经添加过类型为检查日期的问题!");
|
||||||
}
|
}
|
||||||
var entity = await _systemClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _systemClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
@ -396,9 +425,17 @@ namespace IRaCIS.Core.Application.Service
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> AddOrUpdateSystemClinicalTableQuestion(SystemClinicalTableQuestionDto inDto)
|
public async Task<IResponseOutput> AddOrUpdateSystemClinicalTableQuestion(SystemClinicalTableQuestionDto inDto)
|
||||||
{
|
{
|
||||||
if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
if (inDto.IsVerify)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
}
|
}
|
||||||
|
|
||||||
var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
|
@ -451,9 +488,17 @@ namespace IRaCIS.Core.Application.Service
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> AddOrUpdateTrialClinicalTableQuestion(TrialClinicalTableQuestionDto inDto)
|
public async Task<IResponseOutput> AddOrUpdateTrialClinicalTableQuestion(TrialClinicalTableQuestionDto inDto)
|
||||||
{
|
{
|
||||||
if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
if (inDto.IsVerify)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
}
|
}
|
||||||
var entity = await _trialClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _trialClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ using Panda.DynamicWebApi.Attributes;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
|
using System.Linq.Dynamic.Core;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -24,6 +25,8 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
private readonly IRepository<PreviousHistory> _previousHistoryRepository;
|
private readonly IRepository<PreviousHistory> _previousHistoryRepository;
|
||||||
|
private readonly IRepository<ReadModuleCriterionFrom> _readModuleCriterionFromRepository;
|
||||||
|
private readonly IRepository<ClinicalForm> _clinicalFormRepository;
|
||||||
private readonly IRepository<PreviousOther> _previousOtherRepository;
|
private readonly IRepository<PreviousOther> _previousOtherRepository;
|
||||||
private readonly IRepository<PreviousSurgery> _previousSurgeryRepository;
|
private readonly IRepository<PreviousSurgery> _previousSurgeryRepository;
|
||||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||||
|
@ -37,7 +40,8 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<PreviousPDF> previousPDFRepository,
|
IRepository<PreviousPDF> previousPDFRepository,
|
||||||
IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<PreviousHistory> previousHistoryRepository,
|
IRepository<PreviousHistory> previousHistoryRepository,
|
||||||
|
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
||||||
|
IRepository<ClinicalForm> clinicalFormRepository,
|
||||||
IRepository<PreviousOther> previousOtherRepository,
|
IRepository<PreviousOther> previousOtherRepository,
|
||||||
IRepository<PreviousSurgery> previousSurgeryRepository,
|
IRepository<PreviousSurgery> previousSurgeryRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||||
|
@ -53,6 +57,8 @@ namespace IRaCIS.Application.Services
|
||||||
this._previousPDFRepository = previousPDFRepository;
|
this._previousPDFRepository = previousPDFRepository;
|
||||||
this._subjectVisitRepository = subjectVisitRepository;
|
this._subjectVisitRepository = subjectVisitRepository;
|
||||||
this._previousHistoryRepository = previousHistoryRepository;
|
this._previousHistoryRepository = previousHistoryRepository;
|
||||||
|
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
||||||
|
this._clinicalFormRepository = clinicalFormRepository;
|
||||||
this._previousOtherRepository = previousOtherRepository;
|
this._previousOtherRepository = previousOtherRepository;
|
||||||
this._previousSurgeryRepository = previousSurgeryRepository;
|
this._previousSurgeryRepository = previousSurgeryRepository;
|
||||||
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||||
|
@ -179,12 +185,6 @@ namespace IRaCIS.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<List<GetCRCClinicalDataOutDto>> GetCRCClinicalData(GetCRCClinicalDataInDto inDto)
|
public async Task<List<GetCRCClinicalDataOutDto>> GetCRCClinicalData(GetCRCClinicalDataInDto inDto)
|
||||||
{
|
{
|
||||||
//if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
|
|
||||||
//{
|
|
||||||
// await this.AddCRCClinicalData(inDto);
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
|
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
|
||||||
.WhereIf(inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
.WhereIf(inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||||
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||||
|
@ -201,29 +201,26 @@ namespace IRaCIS.Application.Services
|
||||||
Path = x.ClinicalDataTrialSet.Path,
|
Path = x.ClinicalDataTrialSet.Path,
|
||||||
IsBlind = x.IsBlind,
|
IsBlind = x.IsBlind,
|
||||||
IsComplete = x.IsComplete,
|
IsComplete = x.IsComplete,
|
||||||
|
ClinicalFromList=x.Subject.ClinicalFormList.Where(y=>y.ReadingId==x.ReadingId&&y.ClinicalDataTrialSetId==x.ClinicalDataTrialSetId).Select(y=> new ClinicalFromData() {
|
||||||
|
CheckDate=y.CheckDate,
|
||||||
|
ClinicalFormId=y.Id
|
||||||
|
}).ToList(),
|
||||||
PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
||||||
{
|
{
|
||||||
Id = y.Id,
|
Id = y.Id,
|
||||||
FileName = y.FileName,
|
FileName = y.FileName,
|
||||||
Path = y.Path,
|
Path = y.Path,
|
||||||
CreateTime = y.CreateTime,
|
CreateTime = y.CreateTime,
|
||||||
}).ToList()
|
}).ToList(),
|
||||||
|
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
List<GetReadingClinicalDataListOutDto> clinicalData = (await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto()
|
|
||||||
{
|
|
||||||
SubjectId = inDto.SubjectId,
|
|
||||||
ReadingId = inDto.SubjectVisitId,
|
|
||||||
TrialId = inDto.TrialId,
|
|
||||||
})).Item1;
|
|
||||||
|
|
||||||
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
|
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
|
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
|
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
foreach (var item in cRCClinicalDataList)
|
foreach (var item in cRCClinicalDataList)
|
||||||
{
|
{
|
||||||
//item.PDFFileList = clinicalData.Where(y => y.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).SelectMany(x => x.FileList).ToList();
|
|
||||||
item.ClinicalTableData = new ClinicalDataTable()
|
item.ClinicalTableData = new ClinicalDataTable()
|
||||||
{
|
{
|
||||||
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
||||||
|
@ -310,7 +307,7 @@ namespace IRaCIS.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理 任务 临床数据是否签名
|
//处理 任务 临床数据是否签名
|
||||||
private async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
|
public async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
|
||||||
{
|
{
|
||||||
//获取确认的临床数据配置
|
//获取确认的临床数据配置
|
||||||
var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
|
var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
|
||||||
|
@ -328,6 +325,8 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
|
var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//判断是否基线
|
//判断是否基线
|
||||||
if (isBaseLine)
|
if (isBaseLine)
|
||||||
{
|
{
|
||||||
|
@ -356,21 +355,43 @@ namespace IRaCIS.Application.Services
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//判断是影像学 还是肿瘤学阅片
|
//判断是影像学 还是肿瘤学阅片
|
||||||
var readingSetType = await _readModuleRepository.Where(t => t.Id == readingId).Select(t => t.ReadingSetType).FirstOrDefaultAsync();
|
var readModule = await _readModuleRepository.Where(t => t.Id == readingId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
//CRC 阅片期自定义结构化录入是否签名
|
||||||
|
bool crcReadModuleSign = true;
|
||||||
|
|
||||||
//影像学
|
//影像学
|
||||||
if (readingSetType == ReadingSetType.ImageReading)
|
if (readModule.ReadingSetType == ReadingSetType.ImageReading)
|
||||||
{
|
{
|
||||||
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead).Count();
|
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead).Count();
|
||||||
|
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.ImageRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId)) || readModule.IsPMConfirm;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//肿瘤学
|
//肿瘤学
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
|
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
|
||||||
|
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.OncologyRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId)) || readModule.IsPMConfirm;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//可能仅仅CRC 基线 没有PM
|
//可能仅仅CRC 基线 没有PM
|
||||||
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
|
if (needSignCount == haveSignedCount && crcReadModuleSign/*&& needSignCount != 0*/)
|
||||||
{
|
{
|
||||||
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
|
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
|
||||||
|
@ -380,6 +401,13 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
|
||||||
|
{
|
||||||
|
IsClinicalDataSign = false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -606,10 +634,6 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
var clinicalDataList = await this.GetTrialClinicalDataSelect(getTrialClinicalDataSelectIndto);
|
var clinicalDataList = await this.GetTrialClinicalDataSelect(getTrialClinicalDataSelectIndto);
|
||||||
|
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
|
|
||||||
{
|
|
||||||
inDto.UploadRole = UploadRole.CRC;
|
|
||||||
}
|
|
||||||
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
||||||
|
|
||||||
|
|
||||||
|
@ -646,9 +670,9 @@ namespace IRaCIS.Application.Services
|
||||||
inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId;
|
inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||||
.WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId)
|
.WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId)
|
||||||
|
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
||||||
.WhereIf(inDto.SelectIsSign, x => x.IsSign == true)
|
.WhereIf(inDto.SelectIsSign, x => x.IsSign == true)
|
||||||
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
||||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
|
@ -656,13 +680,13 @@ namespace IRaCIS.Application.Services
|
||||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||||
SubjectId = x.SubjectId,
|
SubjectId = x.SubjectId,
|
||||||
ReadingId = x.ReadingId,
|
ReadingId = x.ReadingId,
|
||||||
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
||||||
IsSign = x.IsSign,
|
IsSign = x.IsSign,
|
||||||
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||||
CriterionEnumList = x.ClinicalDataTrialSet.CriterionEnumList,
|
CriterionEnumList = x.ClinicalDataTrialSet.CriterionEnumList,
|
||||||
TrialClinicalDataSetCriteriaList=x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
TrialClinicalDataSetCriteriaList = x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||||
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
||||||
|
@ -672,33 +696,141 @@ namespace IRaCIS.Application.Services
|
||||||
FileName = y.FileName,
|
FileName = y.FileName,
|
||||||
Path = y.Path,
|
Path = y.Path,
|
||||||
CreateTime = y.CreateTime,
|
CreateTime = y.CreateTime,
|
||||||
}).ToList()
|
}).ToList(),
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var result = new List<GetReadingClinicalDataListOutDto>();
|
||||||
|
if (!inDto.IsOnlyGetCRCReadModule)
|
||||||
|
{
|
||||||
|
result = await resultQuery.ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||||
|
var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId??default(Guid))).ToListAsync();
|
||||||
|
result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x => {
|
||||||
|
|
||||||
|
x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId&&y.ClinicalDataTrialSetId==x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
|
||||||
|
{
|
||||||
|
CheckDate = y.CheckDate,
|
||||||
|
ClinicalFormId = y.Id
|
||||||
|
}).ToList();
|
||||||
|
x.FileCount = x.ClinicalFromList.Count();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// 这里处理CRC上传 阅片期的临床数据
|
||||||
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId)
|
||||||
|
.WhereIf(inDto.SelectIsSign,x=>x.IsPMConfirm)
|
||||||
|
.WhereIf(!inDto.SelectIsSign, x => x.IsCRCConfirm)
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
if (readModule != null)
|
||||||
|
{
|
||||||
|
var moduleCriterionFromList = await _readModuleCriterionFromRepository
|
||||||
|
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
||||||
|
.Where(x => x.ReadModuleId == readModule.Id).Select(x => new{
|
||||||
|
ClinicalFormId= x.ClinicalFormId,
|
||||||
|
CheckDate= x.ClinicalForm.CheckDate,
|
||||||
|
ClinicalDataTrialSetId= x.ClinicalForm.ClinicalDataTrialSetId
|
||||||
|
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.Structuring)
|
||||||
|
.WhereIf(readModule.ReadingSetType == ReadingSetType.ImageReading, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead)
|
||||||
|
.WhereIf(readModule.ReadingSetType == ReadingSetType.TumorReading, x => x.ClinicalDataLevel == ClinicalLevel.OncologyRead)
|
||||||
|
.Where(x=>x.TrialClinicalDataSetCriteriaList.Any(y=>y.TrialReadingCriterionId==readModule.TrialReadingCriterionId))
|
||||||
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||||
|
SubjectId = inDto.SubjectId,
|
||||||
|
ReadingId = default(Guid),
|
||||||
|
IsCRCApplicationRevoke=readModule.IsCRCApplicationRevoke,
|
||||||
|
IsCRCConfirm= readModule.IsCRCConfirm,
|
||||||
|
IsPMConfirm= readModule.IsPMConfirm,
|
||||||
|
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
|
ClinicalDataSetEnName = x.ClinicalDataSetEnName,
|
||||||
|
ClinicalDataTrialSetId = x.Id,
|
||||||
|
IsSign = readModule.IsPMConfirm,
|
||||||
|
ClinicalUploadType = x.ClinicalUploadType,
|
||||||
|
Id = default(Guid),
|
||||||
|
UploadRole = x.UploadRole,
|
||||||
|
IsCRCUpload = x.UploadRole == UploadRole.CRC,
|
||||||
|
IsNeedMerge = true,
|
||||||
|
ReadModuleId = readModule.Id,
|
||||||
|
//FileCount = x.FileCount,
|
||||||
|
|
||||||
|
//ReadingClinicalDataState = x.ReadingClinicalDataState,
|
||||||
|
|
||||||
|
//FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
||||||
|
//{
|
||||||
|
// Id = y.Id,
|
||||||
|
// FileName = y.FileName,
|
||||||
|
// Path = y.Path,
|
||||||
|
// CreateTime = y.CreateTime,
|
||||||
|
//}).ToList()
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
clinicalresult.ForEach(x =>
|
||||||
|
{
|
||||||
|
x.FileCount = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Count();
|
||||||
|
x.ClinicalFromList = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).OrderBy(y => y.CheckDate).Select(x => new ClinicalFromData
|
||||||
|
{
|
||||||
|
CheckDate = x.CheckDate,
|
||||||
|
ClinicalFormId = x.ClinicalFormId
|
||||||
|
|
||||||
|
}).ToList();
|
||||||
|
x.IsSign = readModule.IsPMConfirm ? true : false;
|
||||||
|
x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
result.AddRange(clinicalresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var result = await resultQuery.ToListAsync();
|
|
||||||
// 根据标准
|
// 根据标准
|
||||||
if (inDto.VisitTaskId != null)
|
if (inDto.VisitTaskId != null)
|
||||||
{
|
{
|
||||||
var visitTaskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
var visitTaskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
||||||
|
|
||||||
result = result.Where(x => x.TrialClinicalDataSetCriteriaList.Any(z=>z.TrialReadingCriterionId==visitTaskInfo.TrialReadingCriterionId)).ToList();
|
result = result.Where(x => x.TrialClinicalDataSetCriteriaList.Any(z => z.TrialReadingCriterionId == visitTaskInfo.TrialReadingCriterionId)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
result = result.Where(x => !(x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
if (inDto.GetClinicalType != null)
|
||||||
// 需要排除表格为空的数据
|
|
||||||
|
|
||||||
|
|
||||||
var readingIds = result.Select(x => x.ReadingId).ToList();
|
|
||||||
|
|
||||||
var tablecount = (await _previousHistoryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync()) +
|
|
||||||
(await _previousOtherRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync()) +
|
|
||||||
(await _previousSurgeryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync());
|
|
||||||
|
|
||||||
if (tablecount == 0)
|
|
||||||
{
|
{
|
||||||
result = result.Where(x => x.ClinicalUploadType != ClinicalUploadType.Table).ToList();
|
switch (inDto.GetClinicalType)
|
||||||
|
{
|
||||||
|
case GetClinicalType.PMUpload:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.PM).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.CRCConfirm:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.CRC&&x.IsCRCConfirm&&!x.IsPMConfirm).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.HasSign:
|
||||||
|
result = result.Where(x => x.IsSign).ToList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
foreach (var item in result)
|
||||||
|
{
|
||||||
|
item.ClinicalTableData = new ClinicalDataTable()
|
||||||
|
{
|
||||||
|
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
||||||
|
PreviousOtherList = previousOtherList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
||||||
|
PreviousSurgeryList = previousSurgeryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -712,14 +844,9 @@ namespace IRaCIS.Application.Services
|
||||||
[NonDynamicMethod]
|
[NonDynamicMethod]
|
||||||
public async Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto)
|
public async Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
//var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstNotNullAsync();
|
|
||||||
|
|
||||||
|
|
||||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||||
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
.Where(x => x.ReadingId == inDto.ReadingId)
|
||||||
//.WhereIf(inDto.UploadRole == UploadRole.CRC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
|
.WhereIf(inDto.ClinicalDataTrialSetId!=null, x=>x.ClinicalDataTrialSetId==inDto.TrialReadingCriterionId)
|
||||||
|
|
||||||
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
|
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
|
||||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
{
|
{
|
||||||
|
@ -750,7 +877,111 @@ namespace IRaCIS.Application.Services
|
||||||
});
|
});
|
||||||
|
|
||||||
var result = await resultQuery.ToListAsync();
|
var result = await resultQuery.ToListAsync();
|
||||||
//result = result.Where(x => !(x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
|
||||||
|
|
||||||
|
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||||
|
var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId ?? default(Guid))).ToListAsync();
|
||||||
|
result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x => {
|
||||||
|
|
||||||
|
x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
|
||||||
|
{
|
||||||
|
CheckDate = y.CheckDate,
|
||||||
|
ClinicalFormId = y.Id
|
||||||
|
}).ToList();
|
||||||
|
x.FileCount = x.ClinicalFromList.Count();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 这里处理CRC上传 阅片期的临床数据
|
||||||
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId&&x.IsCRCConfirm)
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
if (readModule != null)
|
||||||
|
{
|
||||||
|
var moduleCriterionFromList = await _readModuleCriterionFromRepository.Where(x => x.ReadModuleId == readModule.Id)
|
||||||
|
|
||||||
|
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.TrialReadingCriterionId)
|
||||||
|
.Select(x => new {
|
||||||
|
ClinicalFormId = x.ClinicalFormId,
|
||||||
|
CheckDate = x.ClinicalForm.CheckDate,
|
||||||
|
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId
|
||||||
|
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC&&x.ClinicalUploadType== ClinicalUploadType.Structuring)
|
||||||
|
.WhereIf(readModule.ReadingSetType == ReadingSetType.ImageReading,x=>x.ClinicalDataLevel== ClinicalLevel.ImageRead)
|
||||||
|
.WhereIf(readModule.ReadingSetType == ReadingSetType.TumorReading, x => x.ClinicalDataLevel == ClinicalLevel.OncologyRead)
|
||||||
|
.Where(x => x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == readModule.TrialReadingCriterionId))
|
||||||
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||||
|
SubjectId = inDto.SubjectId,
|
||||||
|
ReadingId = default(Guid),
|
||||||
|
IsCRCApplicationRevoke= readModule.IsCRCApplicationRevoke,
|
||||||
|
IsCRCConfirm = readModule.IsCRCConfirm,
|
||||||
|
IsPMConfirm=readModule.IsPMConfirm,
|
||||||
|
|
||||||
|
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
|
ClinicalDataSetEnName = x.ClinicalDataSetEnName,
|
||||||
|
ClinicalDataTrialSetId = x.Id,
|
||||||
|
IsSign = readModule.IsPMConfirm,
|
||||||
|
ClinicalUploadType = x.ClinicalUploadType,
|
||||||
|
Id = default(Guid),
|
||||||
|
UploadRole = x.UploadRole,
|
||||||
|
IsCRCUpload = x.UploadRole == UploadRole.CRC,
|
||||||
|
IsNeedMerge = true,
|
||||||
|
ReadModuleId = readModule.Id,
|
||||||
|
//FileCount = x.FileCount,
|
||||||
|
|
||||||
|
//ReadingClinicalDataState = x.ReadingClinicalDataState,
|
||||||
|
|
||||||
|
//FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
||||||
|
//{
|
||||||
|
// Id = y.Id,
|
||||||
|
// FileName = y.FileName,
|
||||||
|
// Path = y.Path,
|
||||||
|
// CreateTime = y.CreateTime,
|
||||||
|
//}).ToList()
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
clinicalresult.ForEach(x =>
|
||||||
|
{
|
||||||
|
x.FileCount = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Count();
|
||||||
|
x.ClinicalFromList = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).OrderBy(y => y.CheckDate).Select(x => new ClinicalFromData
|
||||||
|
{
|
||||||
|
CheckDate = x.CheckDate,
|
||||||
|
ClinicalFormId = x.ClinicalFormId
|
||||||
|
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
x.IsSign = readModule.IsPMConfirm ?true : false;
|
||||||
|
x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
result.AddRange(clinicalresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (inDto.GetClinicalType != null)
|
||||||
|
{
|
||||||
|
switch (inDto.GetClinicalType)
|
||||||
|
{
|
||||||
|
case GetClinicalType.PMUpload:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.PM).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.CRCConfirm:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.CRC&&x.IsCRCConfirm&&!x.IsPMConfirm).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.HasSign:
|
||||||
|
result = result.Where(x => x.IsSign).ToList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,10 @@ using System.Threading.Tasks;
|
||||||
namespace IRaCIS.Core.Application.Service.Reading.Dto
|
namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public class CRCSignClinicalDataInDto
|
||||||
|
{
|
||||||
|
public Guid ReadingClinicalDataId { get; set; }
|
||||||
|
}
|
||||||
public class AutoAddClinicalInDto
|
public class AutoAddClinicalInDto
|
||||||
{
|
{
|
||||||
public Guid? SubjectId { get; set; }
|
public Guid? SubjectId { get; set; }
|
||||||
|
@ -18,9 +22,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class GetCRCSubjectClinicalInDto
|
public class GetCRCSubjectClinicalInDto:PageInput
|
||||||
{
|
{
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid? SubjectId { get; set; }
|
||||||
|
|
||||||
|
public string? SubjectCode { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,9 +36,33 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
{
|
{
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
|
public Guid ReadingClinicalDataId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 上传角色
|
||||||
|
/// </summary>
|
||||||
|
public UploadRole UploadRole { get; set; }
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
public string SubjectCode { get; set; }
|
/// <summary>
|
||||||
|
/// 访视Id 或者模块Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid ReadingId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 临床级别
|
||||||
|
/// </summary>
|
||||||
|
public ClinicalLevel ClinicalDataLevel { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public Guid? BaseLineVisitId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 上传方式
|
||||||
|
/// </summary>
|
||||||
|
public ClinicalUploadType ClinicalUploadType { get; set; }
|
||||||
|
|
||||||
|
public string SubjectCode { get; set; }
|
||||||
public Guid ClinicalDataTrialSetId { get; set; }
|
public Guid ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
public string ClinicalDataSetName { get; set; }
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
@ -99,12 +131,33 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public string Answer { get; set; } = string.Empty;
|
public string Answer { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetCRCConfirmListInDto
|
public class GetPMConfirmListInDto: PageInput
|
||||||
{
|
{
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetCRCConfirmListInDto:PageInput
|
||||||
|
{
|
||||||
|
|
||||||
|
public bool? IsCRCConfirm { get; set; }
|
||||||
|
|
||||||
|
public bool? IsPMConfirm { get; set; }
|
||||||
|
|
||||||
|
public Guid? TrialReadingCriterionId { get; set; }
|
||||||
|
|
||||||
|
public Guid? SubjectId { get; set; }
|
||||||
|
|
||||||
|
public DateTime? StartTime { get; set; }
|
||||||
|
public DateTime? EndTime { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
public Guid? ReadModuleId { get; set; }
|
public Guid? ReadModuleId { get; set; }
|
||||||
}
|
|
||||||
|
public string? SubjectCode { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class CRCCancelConfirmClinicalInDto
|
public class CRCCancelConfirmClinicalInDto
|
||||||
{
|
{
|
||||||
|
@ -113,7 +166,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public Guid ReadModuleId { get; set; }
|
public Guid ReadModuleId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetCRCBeConfirmListInDto
|
public class GetClinicalDateListOutDto
|
||||||
|
{
|
||||||
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<GetCRCBeConfirmListOutDto> DateList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class GetCRCBeConfirmListInDto
|
||||||
{
|
{
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
@ -121,8 +183,35 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class GetCRCBeConfirmListOutDto
|
public class GetClinicalTableListInDto
|
||||||
|
{
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid ReadModuleId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class GetClinicalTableListOutDto: GetClinicalQuestionAnswerListOutDto
|
||||||
|
{
|
||||||
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 模块名称
|
||||||
|
/// </summary>
|
||||||
|
public string ModuleName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class GetCRCBeConfirm: GetCRCBeConfirmListOutDto
|
||||||
|
{
|
||||||
|
public Guid ReadModuleId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class GetCRCBeConfirmListOutDto
|
||||||
{
|
{
|
||||||
|
public Guid ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
public Guid ClinicalFormId { get; set; }
|
public Guid ClinicalFormId { get; set; }
|
||||||
|
|
||||||
public string ClinicalDataSetName { get; set; }
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
@ -130,18 +219,39 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public string ClinicalDataSetEnName { get; set; }
|
public string ClinicalDataSetEnName { get; set; }
|
||||||
|
|
||||||
public DateTime CheckDate { get; set; }
|
public DateTime CheckDate { get; set; }
|
||||||
|
|
||||||
|
public bool IsHaveTableQuestion { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CRCConfirmClinicalInDto
|
public class CRCConfirmClinicalInDto
|
||||||
{
|
{
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
public Guid ReadModuleId { get; set; }
|
public Guid ReadModuleId { get; set; }
|
||||||
}
|
|
||||||
|
/// <summary>
|
||||||
|
/// 临床数据是否完整
|
||||||
|
/// </summary>
|
||||||
|
public bool? IsClinicalDataComplete { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 临床数据是否盲化
|
||||||
|
/// </summary>
|
||||||
|
public bool? IsClinicalDataBlind { get; set; }
|
||||||
|
|
||||||
|
public bool IsConfirm { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public class CRCClinicalForm
|
public class CRCClinicalForm
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 受试者Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid SubjectId { get; set; }
|
||||||
public DateTime? CheckDate { get; set; }
|
public DateTime? CheckDate { get; set; }
|
||||||
|
|
||||||
public Guid ClinicalFormId { get; set; }
|
public Guid ClinicalFormId { get; set; }
|
||||||
|
@ -151,8 +261,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ClinicalLevel ClinicalDataLevel { get; set; }
|
public ClinicalLevel ClinicalDataLevel { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public Guid ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
public string ClinicalDataSetName { get; set; }
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
public bool IsHaveTableQuestion { get; set; }
|
||||||
|
|
||||||
public string ClinicalDataSetEnName { get; set; }
|
public string ClinicalDataSetEnName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,39 +279,69 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// 受试者ID
|
/// 受试者ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
public Guid ReadModuleId { get; set; }
|
|
||||||
|
|
||||||
public bool IsPMConfirm { get; set; }
|
public bool IsNotNeedPMConfirm { get; set; } = false;
|
||||||
|
public Guid ReadModuleId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 模块名称
|
||||||
|
/// </summary>
|
||||||
|
public string ModuleName { get; set; }
|
||||||
|
|
||||||
|
public string VisitBlindName { get; set; }
|
||||||
|
|
||||||
|
public bool IsPMConfirm { get; set; }
|
||||||
|
|
||||||
public ReadingSetType ReadingSetType { get; set; }
|
public ReadingSetType ReadingSetType { get; set; }
|
||||||
|
|
||||||
public bool IsCRCConfirm { get; set; } = false;
|
public bool IsCRCConfirm { get; set; } = false;
|
||||||
|
|
||||||
public string SubjectCode { get; set; }
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC是否正在申请撤回
|
||||||
|
/// </summary>
|
||||||
|
public bool IsCRCApplicationRevoke { get; set; } = false;
|
||||||
|
|
||||||
|
public string SubjectCode { get; set; }
|
||||||
|
|
||||||
|
public bool IsHaveTableQuestion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return ClinicalFormList.Any(x => x.IsHaveTableQuestion);
|
||||||
|
}
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 最晚拍片日期
|
/// 最晚拍片日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? LatestScanDate { get; set; }
|
public DateTime? LatestScanDate { get; set; }
|
||||||
|
|
||||||
|
public List<string> ClinicalNameList
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.ClinicalFormList.Select(x => x.ClinicalDataSetName).Distinct().ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public List<GetCRCBeConfirmListOutDto> ClinicalFormIdList { get; set; }
|
|
||||||
|
public List<GetCRCBeConfirmListOutDto> ClinicalFormList { get; set; }
|
||||||
|
|
||||||
public int FormCount
|
public int FormCount
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return this.ClinicalFormIdList.Count();
|
return this.ClinicalFormList.Count();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class DeleteClinicalFormInDto
|
||||||
|
{
|
||||||
|
public Guid ClinicalFormId { get; set; }
|
||||||
|
}
|
||||||
public class SubmitClinicalFormInDto
|
public class SubmitClinicalFormInDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// VisitId
|
|
||||||
/// </summary>
|
|
||||||
public Guid? VisitId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// VisitId
|
/// VisitId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否应用
|
/// 是否应用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsApply { get; set; } = false;
|
public bool? IsApply { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 名称
|
/// 名称
|
||||||
|
|
|
@ -156,6 +156,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid? Id { get; set; }
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public bool IsVerify { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 问题名称
|
/// 问题名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -181,6 +184,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? MaxAnswerLength { get; set; }
|
public int? MaxAnswerLength { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 最大行数
|
||||||
|
/// </summary>
|
||||||
|
public int? MaxQuestionCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床数据选项类型(无,自定义)
|
/// 临床数据选项类型(无,自定义)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -360,6 +368,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public Guid? Id { get; set; }
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
|
public bool IsVerify { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 问题名称
|
/// 问题名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -10,8 +10,8 @@ using System.Threading.Tasks;
|
||||||
namespace IRaCIS.Core.Application.Service.Reading.Dto
|
namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
{
|
{
|
||||||
|
|
||||||
public class AddOrUpdateReadingClinicalDataDto
|
public class AddOrUpdateReadingClinicalDataDto
|
||||||
{
|
{
|
||||||
|
|
||||||
public Guid? Id { get; set; }
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
|
@ -113,9 +113,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? IsComplete { get; set; }
|
public bool? IsComplete { get; set; }
|
||||||
|
|
||||||
//public List<GetReadingClinicalDataListOutDto> ReadingClinicalDataList { get; set; }
|
public List<ClinicalFromData> ClinicalFromList { get; set; }
|
||||||
|
|
||||||
public List<GetFileDto> PDFFileList { get; set; } = new List<GetFileDto>();
|
//public List<GetReadingClinicalDataListOutDto> ReadingClinicalDataList { get; set; }
|
||||||
|
|
||||||
|
public List<GetFileDto> PDFFileList { get; set; } = new List<GetFileDto>();
|
||||||
|
|
||||||
public ClinicalDataTable ClinicalTableData { get; set; }
|
public ClinicalDataTable ClinicalTableData { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -127,9 +129,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public List<PreviousOtherView> PreviousOtherList { get; set; }
|
public List<PreviousOtherView> PreviousOtherList { get; set; }
|
||||||
|
|
||||||
public List<PreviousSurgeryView> PreviousSurgeryList{ get; set; }
|
public List<PreviousSurgeryView> PreviousSurgeryList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -137,7 +139,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public class GetCRCClinicalDataInDto
|
public class GetCRCClinicalDataInDto
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid SubjectVisitId { get; set; }
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
@ -163,7 +165,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 文件名称
|
/// 文件名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string FileName { get; set; }
|
public string FileName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 路径
|
/// 路径
|
||||||
|
@ -182,29 +184,52 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public Guid? ReadingId { get; set; }
|
public Guid? ReadingId { get; set; }
|
||||||
|
|
||||||
public Guid? VisitTaskId { get; set; }
|
/// <summary>
|
||||||
|
/// 临床数据类型Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid? ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
public Guid? ReadingClinicalDataId { get; set; }
|
public Guid? VisitTaskId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
/// </summary>
|
||||||
|
public GetClinicalType? GetClinicalType { get; set; }
|
||||||
|
|
||||||
|
public Guid? ReadingClinicalDataId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 只查询已经签名的临床数据
|
/// 只获取CRC上传的阅片模块结构化录入
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool SelectIsSign { get; set; } = true;
|
public bool IsOnlyGetCRCReadModule { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 只查询已经签名的临床数据
|
||||||
|
/// </summary>
|
||||||
|
public bool SelectIsSign { get; set; } = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取访视列表
|
/// 获取访视列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GetReadingClinicalDataListIndto
|
public class GetReadingClinicalDataListIndto
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid ReadingId { get; set; }
|
public Guid ReadingId { get; set; }
|
||||||
|
|
||||||
public UploadRole? UploadRole { get; set; }
|
/// <summary>
|
||||||
|
/// 临床数据类型Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid? ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
[NotDefault]
|
/// <summary>
|
||||||
|
/// 1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
/// </summary>
|
||||||
|
public GetClinicalType? GetClinicalType { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
@ -220,7 +245,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public bool IsBaseLine { get; set; }
|
public bool IsBaseLine { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetReadingClinicalDataPDFListIndto:PageInput
|
public class GetReadingClinicalDataPDFListIndto : PageInput
|
||||||
{
|
{
|
||||||
public Guid ReadingClinicalDataId { get; set; }
|
public Guid ReadingClinicalDataId { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -283,7 +308,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
|
|
||||||
public class PMClinicalDataConfirmCommand
|
public class PMClinicalDataConfirmCommand
|
||||||
{
|
{
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -310,11 +335,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid ReadingId { get; set; }
|
public Guid ReadingId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC是否正在申请撤回
|
||||||
|
/// </summary>
|
||||||
|
public bool IsCRCApplicationRevoke { get; set; } = false;
|
||||||
|
public bool IsCRCConfirm { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
public bool IsPMConfirm { get; set; } = false;
|
||||||
/// 项目配置临床类型Name
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
public string ClinicalDataSetName { get; set; }
|
/// 项目配置临床类型Name
|
||||||
|
/// </summary>
|
||||||
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 英文名称
|
/// 英文名称
|
||||||
|
@ -363,11 +395,15 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsCRCUpload { get; set; }
|
public bool IsCRCUpload { get; set; }
|
||||||
|
|
||||||
|
public bool IsNeedMerge { get; set; } = false;
|
||||||
|
|
||||||
|
public Guid ReadModuleId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否签名
|
/// 是否签名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsSign { get; set; }
|
public bool IsSign { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -395,6 +431,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
public List<ClinicalFromData> ClinicalFromList { get; set; }
|
||||||
|
|
||||||
public List<GetFileDto> FileList { get; set; } = new List<GetFileDto>();
|
public List<GetFileDto> FileList { get; set; } = new List<GetFileDto>();
|
||||||
|
|
||||||
|
|
||||||
|
@ -404,6 +442,19 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class ClinicalFromData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 表单Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid ClinicalFormId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CheckDate { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class GetFileDto
|
public class GetFileDto
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Interface
|
||||||
{
|
{
|
||||||
public interface IClinicalAnswerService
|
public interface IClinicalAnswerService
|
||||||
{
|
{
|
||||||
Task AutoAddCRCClinical(AutoAddClinicalInDto inDto);
|
Task<IResponseOutput> CRCSignClinicalData(CRCSignClinicalDataInDto inDto);
|
||||||
}
|
|
||||||
|
Task AutoAddCRCClinical(AutoAddClinicalInDto inDto);
|
||||||
|
|
||||||
|
Task<IResponseOutput> PMConfirmClinical(CRCConfirmClinicalInDto inDto);
|
||||||
|
|
||||||
|
Task<IResponseOutput> SubmitClinicalForm(SubmitClinicalFormInDto inDto);
|
||||||
|
|
||||||
|
Task<IResponseOutput> CRCConfirmClinical(CRCConfirmClinicalInDto inDto);
|
||||||
|
|
||||||
|
Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,5 +23,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
// Task<(List<GetReadingClinicalDataListOutDto>, object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto);
|
// Task<(List<GetReadingClinicalDataListOutDto>, object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto);
|
||||||
|
|
||||||
Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto);
|
Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto);
|
||||||
|
|
||||||
|
Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -526,7 +526,7 @@ namespace IRaCIS.Application.Services
|
||||||
x.VisitTaskNum < taskInfo.VisitTaskNum &&
|
x.VisitTaskNum < taskInfo.VisitTaskNum &&
|
||||||
x.ArmEnum == taskInfo.ArmEnum &&
|
x.ArmEnum == taskInfo.ArmEnum &&
|
||||||
x.Id != inDto.VisitTaskId &&
|
x.Id != inDto.VisitTaskId &&
|
||||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
//x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||||
x.TaskState == TaskState.Effect &&
|
x.TaskState == TaskState.Effect &&
|
||||||
|
@ -2165,6 +2165,7 @@ namespace IRaCIS.Application.Services
|
||||||
SubjectId = taskInfo.SubjectId,
|
SubjectId = taskInfo.SubjectId,
|
||||||
TrialId = taskInfo.TrialId,
|
TrialId = taskInfo.TrialId,
|
||||||
VisitTaskId = taskInfo.Id,
|
VisitTaskId = taskInfo.Id,
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var isBaseLine = false;
|
var isBaseLine = false;
|
||||||
|
@ -2625,7 +2626,7 @@ namespace IRaCIS.Application.Services
|
||||||
x.SubjectId == taskInfo.SubjectId &&
|
x.SubjectId == taskInfo.SubjectId &&
|
||||||
x.VisitTaskNum < taskInfo.VisitTaskNum &&
|
x.VisitTaskNum < taskInfo.VisitTaskNum &&
|
||||||
x.ArmEnum == taskInfo.ArmEnum &&
|
x.ArmEnum == taskInfo.ArmEnum &&
|
||||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
//x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||||
x.TaskState == TaskState.Effect &&
|
x.TaskState == TaskState.Effect &&
|
||||||
|
@ -2641,7 +2642,7 @@ namespace IRaCIS.Application.Services
|
||||||
x.SubjectId == taskInfo.SubjectId &&
|
x.SubjectId == taskInfo.SubjectId &&
|
||||||
x.VisitTaskNum <= taskInfo.VisitTaskNum &&
|
x.VisitTaskNum <= taskInfo.VisitTaskNum &&
|
||||||
x.ArmEnum == taskInfo.ArmEnum &&
|
x.ArmEnum == taskInfo.ArmEnum &&
|
||||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
//x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||||
(x.TaskState == TaskState.Effect || x.TaskState == TaskState.Freeze) &&
|
(x.TaskState == TaskState.Effect || x.TaskState == TaskState.Freeze) &&
|
||||||
|
@ -2665,7 +2666,7 @@ namespace IRaCIS.Application.Services
|
||||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
||||||
x.ArmEnum == taskInfo.ArmEnum &&
|
x.ArmEnum == taskInfo.ArmEnum &&
|
||||||
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
|
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
|
||||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
//x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||||
x.TaskState == TaskState.Effect && x.VisitTaskNum <= taskInfo.VisitTaskNum).Select(x => x.Id).ToListAsync();
|
x.TaskState == TaskState.Effect && x.VisitTaskNum <= taskInfo.VisitTaskNum).Select(x => x.Id).ToListAsync();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ using IRaCIS.Core.Application.Service;
|
||||||
using IRaCIS.Core.Application.ViewModel;
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Application.Filter;
|
using IRaCIS.Core.Application.Filter;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -25,6 +26,7 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IRepository<Trial> _trialRepository;
|
private readonly IRepository<Trial> _trialRepository;
|
||||||
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
||||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
|
private readonly IRepository<ReadModuleCriterionFrom> _readModuleCriterionFromRepository;
|
||||||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||||
private readonly IRepository<ReadModuleView> _readModuleViewRepository;
|
private readonly IRepository<ReadModuleView> _readModuleViewRepository;
|
||||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||||
|
@ -41,6 +43,7 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<Trial> trialRepository,
|
IRepository<Trial> trialRepository,
|
||||||
IVisitTaskHelpeService visitTaskHelpeService,
|
IVisitTaskHelpeService visitTaskHelpeService,
|
||||||
IRepository<VisitTask> visitTaskRepository,
|
IRepository<VisitTask> visitTaskRepository,
|
||||||
|
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
||||||
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
|
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
|
||||||
IRepository<ReadModuleView> readModuleViewRepository,
|
IRepository<ReadModuleView> readModuleViewRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||||
|
@ -57,6 +60,7 @@ namespace IRaCIS.Application.Services
|
||||||
this._trialRepository = trialRepository;
|
this._trialRepository = trialRepository;
|
||||||
this._visitTaskHelpeService = visitTaskHelpeService;
|
this._visitTaskHelpeService = visitTaskHelpeService;
|
||||||
this._visitTaskRepository = visitTaskRepository;
|
this._visitTaskRepository = visitTaskRepository;
|
||||||
|
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
||||||
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
||||||
this._readModuleViewRepository = readModuleViewRepository;
|
this._readModuleViewRepository = readModuleViewRepository;
|
||||||
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||||
|
@ -115,6 +119,13 @@ namespace IRaCIS.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<bool> ChangeCutOffVisit(ChangeCutOffVisitInDto inDto)
|
public async Task<bool> ChangeCutOffVisit(ChangeCutOffVisitInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (await _readModuleRepository.AnyAsync(x => x.Id == inDto.Id && x.IsCRCConfirm))
|
||||||
|
{
|
||||||
|
//---CRC已经确认临床数据 不允许编辑
|
||||||
|
throw new BusinessValidationFailedException(_localizer["ReadModule_CRCConfirmCanNtoEdit"]);
|
||||||
|
}
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.Id, x => new ReadModule() {
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.Id, x => new ReadModule() {
|
||||||
SubjectVisitId=inDto.SubjectVisitIdId,
|
SubjectVisitId=inDto.SubjectVisitIdId,
|
||||||
ModuleName=inDto.Name,
|
ModuleName=inDto.Name,
|
||||||
|
@ -480,6 +491,14 @@ namespace IRaCIS.Application.Services
|
||||||
return ResponseOutput.NotOk(_localizer["ReadModule_SignedDataCannotDelete"]);
|
return ResponseOutput.NotOk(_localizer["ReadModule_SignedDataCannotDelete"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (await _readModuleRepository.AnyAsync(x => x.Id == readModuleId&&x.IsCRCConfirm))
|
||||||
|
{
|
||||||
|
//---CRC已经确认临床数据 不允许删除
|
||||||
|
return ResponseOutput.NotOk(_localizer["ReadModule_CRCConfirmClinicalData"]);
|
||||||
|
}
|
||||||
|
|
||||||
//增加标准
|
//增加标准
|
||||||
if (readModule.ModuleType==ModuleTypeEnum.Global&&(await _readModuleRepository.AnyAsync(x=>x.ModuleType==ModuleTypeEnum.Oncology&&x.SubjectVisitId== readModule.SubjectVisitId && x.TrialReadingCriterionId==readModule.TrialReadingCriterionId)))
|
if (readModule.ModuleType==ModuleTypeEnum.Global&&(await _readModuleRepository.AnyAsync(x=>x.ModuleType==ModuleTypeEnum.Oncology&&x.SubjectVisitId== readModule.SubjectVisitId && x.TrialReadingCriterionId==readModule.TrialReadingCriterionId)))
|
||||||
{
|
{
|
||||||
|
@ -499,6 +518,7 @@ namespace IRaCIS.Application.Services
|
||||||
TaskState = TaskState.Adbandon
|
TaskState = TaskState.Adbandon
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(t => t.Id == readModuleId, x => new ReadModule()
|
await _readModuleRepository.UpdatePartialFromQueryAsync(t => t.Id == readModuleId, x => new ReadModule()
|
||||||
{
|
{
|
||||||
|
|
|
@ -927,7 +927,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||||
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
||||||
x.DoctorUserId == taskinfo.DoctorUserId &&
|
//x.DoctorUserId == taskinfo.DoctorUserId &&
|
||||||
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
||||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ArmEnum == taskinfo.ArmEnum
|
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ArmEnum == taskinfo.ArmEnum
|
||||||
&& x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect
|
&& x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect
|
||||||
|
|
|
@ -381,7 +381,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||||
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
||||||
x.DoctorUserId ==taskinfo.DoctorUserId &&
|
//x.DoctorUserId ==taskinfo.DoctorUserId &&
|
||||||
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
||||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
||||||
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
|
|
@ -733,7 +733,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||||
x.IsAnalysisCreate== taskinfo.IsAnalysisCreate&&
|
x.IsAnalysisCreate== taskinfo.IsAnalysisCreate&&
|
||||||
x.DoctorUserId == taskinfo.DoctorUserId &&
|
//x.DoctorUserId == taskinfo.DoctorUserId &&
|
||||||
x.IsSelfAnalysis== taskinfo.IsSelfAnalysis &&
|
x.IsSelfAnalysis== taskinfo.IsSelfAnalysis &&
|
||||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
||||||
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
|
|
@ -728,7 +728,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||||
x.IsAnalysisCreate== taskinfo.IsAnalysisCreate&&
|
x.IsAnalysisCreate== taskinfo.IsAnalysisCreate&&
|
||||||
x.DoctorUserId == taskinfo.DoctorUserId &&
|
//x.DoctorUserId == taskinfo.DoctorUserId &&
|
||||||
x.IsSelfAnalysis== taskinfo.IsSelfAnalysis &&
|
x.IsSelfAnalysis== taskinfo.IsSelfAnalysis &&
|
||||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
||||||
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
|
|
@ -383,7 +383,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||||
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
||||||
x.DoctorUserId == taskinfo.DoctorUserId &&
|
//x.DoctorUserId == taskinfo.DoctorUserId &&
|
||||||
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
||||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
|
||||||
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
|
|
@ -105,10 +105,13 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public int? ToBeApprovalCount { get; set; }
|
public int? ToBeApprovalCount { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class GetPMClinicalDataToBeDoneListOutDto: TrialBaseInfoDto
|
||||||
|
{
|
||||||
|
public int? ToBeApprovalCount { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class ReviewerSelectToBeDoneQuery : PageInput
|
public class ReviewerSelectToBeDoneQuery : PageInput
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ReviewerSelectToBeDoneDto : TrialBaseInfoDto
|
public class ReviewerSelectToBeDoneDto : TrialBaseInfoDto
|
||||||
|
@ -253,6 +256,12 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public int? UrgentCount { get; set; }
|
public int? UrgentCount { get; set; }
|
||||||
|
|
||||||
public int? ToBeDealedCount { get; set; }
|
public int? ToBeDealedCount { get; set; }
|
||||||
|
|
||||||
|
public int? ToAllCount { get; set; }
|
||||||
|
|
||||||
|
public int? ToBeVisitCount { get; set; }
|
||||||
|
|
||||||
|
public int? ReadModuleCount { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TrialToBeDoneQuery : PageInput
|
public class TrialToBeDoneQuery : PageInput
|
||||||
|
|
|
@ -20,15 +20,19 @@ namespace IRaCIS.Core.Application
|
||||||
private readonly IRepository<TrialUser> _trialUserRepository;
|
private readonly IRepository<TrialUser> _trialUserRepository;
|
||||||
private readonly IRepository<TrialDocument> _trialDocumentRepository;
|
private readonly IRepository<TrialDocument> _trialDocumentRepository;
|
||||||
private readonly IRepository<SystemDocument> _systemDocumentRepository;
|
private readonly IRepository<SystemDocument> _systemDocumentRepository;
|
||||||
|
private readonly IRepository<ReadModule> _readModuleRepository;
|
||||||
private readonly IRepository<SystemNotice> _systemNoticeRepository;
|
private readonly IRepository<SystemNotice> _systemNoticeRepository;
|
||||||
|
|
||||||
public PersonalWorkstation(IRepository<Trial> trialRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialDocument> trialDocumentRepository,
|
public PersonalWorkstation(IRepository<Trial> trialRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialDocument> trialDocumentRepository,
|
||||||
IRepository<SystemDocument> systemDocumentRepository, IRepository<SystemNotice> systemNoticeRepository)
|
IRepository<SystemDocument> systemDocumentRepository,
|
||||||
|
IRepository<ReadModule> readModuleRepository,
|
||||||
|
IRepository<SystemNotice> systemNoticeRepository)
|
||||||
{
|
{
|
||||||
_trialRepository = trialRepository;
|
_trialRepository = trialRepository;
|
||||||
_trialUserRepository = trialUserRepository;
|
_trialUserRepository = trialUserRepository;
|
||||||
_trialDocumentRepository = trialDocumentRepository;
|
_trialDocumentRepository = trialDocumentRepository;
|
||||||
_systemDocumentRepository = systemDocumentRepository;
|
_systemDocumentRepository = systemDocumentRepository;
|
||||||
|
this._readModuleRepository = readModuleRepository;
|
||||||
_systemNoticeRepository = systemNoticeRepository;
|
_systemNoticeRepository = systemNoticeRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,7 +204,7 @@ namespace IRaCIS.Core.Application
|
||||||
|
|
||||||
ToBeRepliedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng &&
|
ToBeRepliedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng &&
|
||||||
u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
|
u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
|
||||||
});
|
}).Where(x => x.ToBeRepliedCount > 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -243,7 +247,7 @@ namespace IRaCIS.Core.Application
|
||||||
UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(),
|
UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(),
|
||||||
ToBeApprovalCount = g.Count(),
|
ToBeApprovalCount = g.Count(),
|
||||||
|
|
||||||
});
|
}).Where(x => x.ToBeApprovalCount > 0);
|
||||||
|
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApplyToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApplyToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
@ -281,7 +285,7 @@ namespace IRaCIS.Core.Application
|
||||||
|
|
||||||
IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView,
|
IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView,
|
||||||
ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count()
|
ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count()
|
||||||
});
|
}).Where(x => x.ToBeApprovalCount > 0);
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -293,6 +297,43 @@ namespace IRaCIS.Core.Application
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取PM核对临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inQuery"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput<PageOutput<GetPMClinicalDataToBeDoneListOutDto>>> GetPMClinicalDataToBeDoneList(ReviewerSelectToBeDoneQuery inQuery)
|
||||||
|
{
|
||||||
|
|
||||||
|
var query = _trialRepository
|
||||||
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
||||||
|
.Select(t => new GetPMClinicalDataToBeDoneListOutDto()
|
||||||
|
{
|
||||||
|
TrialId = t.Id,
|
||||||
|
ResearchProgramNo = t.ResearchProgramNo,
|
||||||
|
ExperimentName = t.ExperimentName,
|
||||||
|
TrialCode = t.TrialCode,
|
||||||
|
|
||||||
|
|
||||||
|
ToBeApprovalCount = t.ReadModuleList.Where(u => u.IsCRCConfirm&&!u.IsPMConfirm).Count()
|
||||||
|
}).Where(x => x.ToBeApprovalCount > 0);
|
||||||
|
|
||||||
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
|
||||||
|
var all =await _trialRepository
|
||||||
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
||||||
|
.Select(t => new GetPMClinicalDataToBeDoneListOutDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
ToBeApprovalCount = t.ReadModuleList.Where(u => u.IsCRCConfirm && !u.IsPMConfirm).Count()
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(result, new { ToBeApprovalCount = all.Sum(x=>x.ToBeApprovalCount) }); ;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
@ -321,7 +362,7 @@ namespace IRaCIS.Core.Application
|
||||||
|
|
||||||
IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView,
|
IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView,
|
||||||
ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).Count()
|
ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).Count()
|
||||||
});
|
}).Where(x => x.ToBeApprovalCount > 0) ;
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -358,7 +399,7 @@ namespace IRaCIS.Core.Application
|
||||||
UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(),
|
UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(),
|
||||||
ToBeApprovalCount = g.Count(),
|
ToBeApprovalCount = g.Count(),
|
||||||
|
|
||||||
});
|
}).Where(x => x.ToBeApprovalCount > 0);
|
||||||
|
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApprovalToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApprovalToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
@ -399,9 +440,50 @@ namespace IRaCIS.Core.Application
|
||||||
ExperimentName = t.ExperimentName,
|
ExperimentName = t.ExperimentName,
|
||||||
TrialCode = t.TrialCode,
|
TrialCode = t.TrialCode,
|
||||||
UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(),
|
UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(),
|
||||||
ToBeDealedCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted).Count(),
|
ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit&& x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject).Count(),
|
||||||
|
ToBeVisitCount= t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count(),
|
||||||
|
ToAllCount= t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC ).Count(),
|
||||||
|
ReadModuleCount =t.ReadModuleList.Where(x=>!x.IsPMConfirm).Count(),
|
||||||
|
}).Where(x=>x.ToBeDealedCount > 0);
|
||||||
|
|
||||||
});
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
var toBeDealedCount = _subjectVisitRepository
|
||||||
|
//.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id) && t.Trial.clinicalDataTrialSets.Any(t => t.ClinicalDataLevel == ClinicalLevel.Subject && t.IsConfirm))
|
||||||
|
.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted).Count();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(result, new { TotalToBeDealedCount = toBeDealedCount });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 临床数据 --CRC 待确认
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inQuery"></param>
|
||||||
|
/// <param name="_subjectVisitRepository"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput<PageOutput<ImageClinicalDataToBeDoneDto>>> GetImageClinicalDataToBeConfirmList(ImageClinicalDataToBeDoneQuery inQuery,
|
||||||
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
||||||
|
[FromServices] IRepository<Trial> _trialRepository)
|
||||||
|
{
|
||||||
|
|
||||||
|
var query = _trialRepository
|
||||||
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
||||||
|
//.Where(t => t.clinicalDataTrialSets.Any(t => t.ClinicalDataLevel == ClinicalLevel.Subject && t.IsConfirm))
|
||||||
|
.Select(t => new ImageClinicalDataToBeDoneDto()
|
||||||
|
{
|
||||||
|
TrialId = t.Id,
|
||||||
|
ResearchProgramNo = t.ResearchProgramNo,
|
||||||
|
ExperimentName = t.ExperimentName,
|
||||||
|
TrialCode = t.TrialCode,
|
||||||
|
UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(),
|
||||||
|
ToBeDealedCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject).Count(),
|
||||||
|
ToBeVisitCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count(),
|
||||||
|
ToAllCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC).Count(),
|
||||||
|
ReadModuleCount = t.ReadModuleList.Where(x => !x.IsPMConfirm).Count(),
|
||||||
|
}).Where(x => x.ReadModuleCount > 0);
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -448,7 +530,7 @@ namespace IRaCIS.Core.Application
|
||||||
|
|
||||||
.Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(),
|
.Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(),
|
||||||
|
|
||||||
});
|
}).Where(x => x.ToBeDealedCount > 0); ;
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQuestionToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQuestionToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -489,7 +571,7 @@ namespace IRaCIS.Core.Application
|
||||||
ToBeReplyedCount = t.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
ToBeReplyedCount = t.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
||||||
.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count()
|
.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count()
|
||||||
|
|
||||||
});
|
}).Where(x => x.ToBeReplyedCount > 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -535,7 +617,7 @@ namespace IRaCIS.Core.Application
|
||||||
.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
||||||
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count(),
|
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count(),
|
||||||
|
|
||||||
});
|
}).Where(x => x.ToBeReUploadCount > 0);
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageReUploadToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageReUploadToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -579,7 +661,7 @@ namespace IRaCIS.Core.Application
|
||||||
.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
||||||
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count(),
|
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count(),
|
||||||
|
|
||||||
});
|
}).Where(x => x.ToBeDealedCount > 0); ;
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageSubmittedToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageSubmittedToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -632,7 +714,7 @@ namespace IRaCIS.Core.Application
|
||||||
//待审核通过,统计从已领取到QC提交之间的 已领取 待审核 审核中 (审核完成 领取人就会清理 所以只用查询当前领取人是自己的就好了)
|
//待审核通过,统计从已领取到QC提交之间的 已领取 待审核 审核中 (审核完成 领取人就会清理 所以只用查询当前领取人是自己的就好了)
|
||||||
ToBeReviewedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == _userInfo.Id).Count()
|
ToBeReviewedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == _userInfo.Id).Count()
|
||||||
|
|
||||||
});
|
}).Where(x => x.UrgentCount > 0);
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQualityToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQualityToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -677,7 +759,7 @@ namespace IRaCIS.Core.Application
|
||||||
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
||||||
.Where(u => u.CreateUserId == _userInfo.Id && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
|
.Where(u => u.CreateUserId == _userInfo.Id && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
|
||||||
|
|
||||||
});
|
}).Where(x => x.ToBeDealedCount > 0); ;
|
||||||
|
|
||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQuestionToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQuestionToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
|
@ -749,9 +831,9 @@ namespace IRaCIS.Core.Application
|
||||||
|
|
||||||
HaveSignedCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)
|
HaveSignedCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)
|
||||||
&& t.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
|
&& t.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
|
||||||
})
|
}).Where(x => x.UnReadCount > 0);
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
#region 废弃
|
#region 废弃
|
||||||
//var query = _trialRepository
|
//var query = _trialRepository
|
||||||
|
|
|
@ -203,6 +203,7 @@ namespace IRaCIS.Core.Application
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> AsyncTrialCriterionDictionary(AsyncTrialCriterionDictionaryInDto inDto)
|
public async Task<IResponseOutput> AsyncTrialCriterionDictionary(AsyncTrialCriterionDictionaryInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync();
|
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync();
|
||||||
|
|
||||||
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
|
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
|
||||||
|
@ -1043,9 +1044,17 @@ namespace IRaCIS.Core.Application
|
||||||
//}); ;
|
//}); ;
|
||||||
|
|
||||||
|
|
||||||
|
var result = await _repository.SaveChangesAsync();
|
||||||
|
|
||||||
|
var criterionTrialList = await _readingQuestionCriterionTrialRepository.Where(x =>x.IsConfirm&& x.TrialId == trialConfig.TrialId&&x.ReadingQuestionCriterionSystemId!=null&&x.SynchronizeOriginalTime==null).ToListAsync();
|
||||||
return ResponseOutput.Ok(await _repository.SaveChangesAsync());
|
foreach (var item in criterionTrialList)
|
||||||
|
{
|
||||||
|
await AsyncTrialCriterionDictionary(new AsyncTrialCriterionDictionaryInDto()
|
||||||
|
{
|
||||||
|
TrialReadingCriterionId = item.Id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return ResponseOutput.Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -98,36 +98,36 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
|
|
||||||
}
|
}
|
||||||
// 触发临床数据
|
// 触发临床数据
|
||||||
if (context.ChangeType == ChangeType.Added)
|
//if (context.ChangeType == ChangeType.Added)
|
||||||
{
|
//{
|
||||||
var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm)
|
// var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm)
|
||||||
|
|
||||||
.Select(x => new
|
// .Select(x => new
|
||||||
{
|
// {
|
||||||
x.Id,
|
// x.Id,
|
||||||
x.ClinicalDataLevel,
|
// x.ClinicalDataLevel,
|
||||||
}).ToListAsync();
|
// }).ToListAsync();
|
||||||
|
|
||||||
List<ReadingClinicalData> readingClinicals = new List<ReadingClinicalData>();
|
// List<ReadingClinicalData> readingClinicals = new List<ReadingClinicalData>();
|
||||||
readingClinicals.AddRange(
|
// readingClinicals.AddRange(
|
||||||
|
|
||||||
cRCClinicalDatas.WhereIf(!context.Entity.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Select(x => new ReadingClinicalData()
|
// cRCClinicalDatas.WhereIf(!context.Entity.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Select(x => new ReadingClinicalData()
|
||||||
{
|
// {
|
||||||
ClinicalDataTrialSetId = x.Id,
|
// ClinicalDataTrialSetId = x.Id,
|
||||||
IsVisit = true,
|
// IsVisit = true,
|
||||||
SubjectId = context.Entity.SubjectId,
|
// SubjectId = context.Entity.SubjectId,
|
||||||
ReadingId = context.Entity.Id,
|
// ReadingId = context.Entity.Id,
|
||||||
TrialId = context.Entity.TrialId
|
// TrialId = context.Entity.TrialId
|
||||||
|
|
||||||
}).ToList()
|
// }).ToList()
|
||||||
|
|
||||||
);
|
// );
|
||||||
|
|
||||||
|
|
||||||
await _readingClinicalDataRepository.AddRangeAsync(readingClinicals);
|
// await _readingClinicalDataRepository.AddRangeAsync(readingClinicals);
|
||||||
await _readingClinicalDataRepository.SaveChangesAsync();
|
// await _readingClinicalDataRepository.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,29 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
public static readonly string Group = "group";
|
public static readonly string Group = "group";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GetClinicalType
|
||||||
|
/// </summary>
|
||||||
|
public enum GetClinicalType
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PM上传
|
||||||
|
/// </summary>
|
||||||
|
PMUpload = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 上传 过确认
|
||||||
|
/// </summary>
|
||||||
|
CRCConfirm = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 已审核
|
||||||
|
/// </summary>
|
||||||
|
HasSign = 3
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床表格问题标识
|
/// 临床表格问题标识
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1924,6 +1947,9 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
|
|
||||||
HaveUploaded = 1,
|
HaveUploaded = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 待核查
|
||||||
|
/// </summary>
|
||||||
HaveChecked = 2,
|
HaveChecked = 2,
|
||||||
|
|
||||||
HaveSigned = 3
|
HaveSigned = 3
|
||||||
|
|
|
@ -100,8 +100,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriteriaList { get; set; }
|
public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriteriaList { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<TrialClinicalQuestion> TrialClinicalQuestionList { get; set; }
|
||||||
|
|
||||||
public string CriterionEnumListStr { get; set; } = String.Empty;
|
|
||||||
|
public string CriterionEnumListStr { get; set; } = String.Empty;
|
||||||
|
|
||||||
public List<int> CriterionEnumList => CriterionEnumListStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t) && int.TryParse(t.Trim(), out var s)).Select(t => int.Parse(t.Trim())).ToList();
|
public List<int> CriterionEnumList => CriterionEnumListStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t) && int.TryParse(t.Trim(), out var s)).Select(t => int.Parse(t.Trim())).ToList();
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,14 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
|
|
||||||
public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; }
|
public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialId")]
|
||||||
|
|
||||||
|
public Trial Trial { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
[ForeignKey("ReadingId")]
|
[ForeignKey("ReadingId")]
|
||||||
|
|
||||||
public SubjectVisit SubjectVisit { get; set; }
|
public SubjectVisit SubjectVisit { get; set; }
|
||||||
|
@ -96,8 +103,10 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<ReadingClinicalDataPDF> ReadingClinicalDataPDFList { get; set; }
|
public List<ReadingClinicalDataPDF> ReadingClinicalDataPDFList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? MaxAnswerLength { get; set; }
|
public int? MaxAnswerLength { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 最大行数
|
||||||
|
/// </summary>
|
||||||
|
public int? MaxQuestionCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床数据选项类型(无,自定义)
|
/// 临床数据选项类型(无,自定义)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -47,6 +47,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// 最大长度
|
/// 最大长度
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? MaxAnswerLength { get; set; }
|
public int? MaxAnswerLength { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 最大行数
|
||||||
|
/// </summary>
|
||||||
|
public int? MaxQuestionCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床数据选项类型(无,自定义)
|
/// 临床数据选项类型(无,自定义)
|
||||||
|
@ -162,7 +167,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// 单位
|
/// 单位
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Unit { get; set; } = string.Empty;
|
public string Unit { get; set; } = string.Empty;
|
||||||
}
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialClinicalId")]
|
||||||
|
public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,11 +44,6 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid ClinicalDataTrialSetId { get; set; }
|
public Guid ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// VisitId
|
|
||||||
/// </summary>
|
|
||||||
public Guid? VisitId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// VisitId
|
/// VisitId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -59,6 +54,10 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[ForeignKey("ClinicalDataTrialSetId")]
|
[ForeignKey("ClinicalDataTrialSetId")]
|
||||||
public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; }
|
public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; }
|
||||||
|
|
||||||
}
|
[JsonIgnore]
|
||||||
|
[ForeignKey("SubjectId")]
|
||||||
|
public Subject Subject { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,25 +79,42 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public bool IsCRCConfirm { get; set; } = false;
|
public bool IsCRCConfirm { get; set; } = false;
|
||||||
|
|
||||||
public bool IsPMConfirm { get; set; } = false;
|
public bool IsPMConfirm { get; set; } = false;
|
||||||
public bool IsDeleted { get; set; }
|
|
||||||
|
public bool IsNotNeedPMConfirm { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC是否正在申请撤回
|
||||||
|
/// </summary>
|
||||||
|
public bool IsCRCApplicationRevoke { get; set; } = false;
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
public DateTime? DeletedTime { get; set; }
|
public DateTime? DeletedTime { get; set; }
|
||||||
|
|
||||||
public Guid? DeleteUserId { get; set; }
|
public Guid? DeleteUserId { get; set; }
|
||||||
|
|
||||||
///// <summary>
|
/// <summary>
|
||||||
/////
|
/// 临床数据是否完整
|
||||||
///// </summary>
|
/// </summary>
|
||||||
//public decimal VisitNum { get; set; }
|
public bool? IsClinicalDataComplete { get; set; }
|
||||||
|
|
||||||
// [JsonIgnore]
|
/// <summary>
|
||||||
///// <summary>
|
/// 临床数据是否盲化
|
||||||
///// 对应
|
/// </summary>
|
||||||
///// </summary>
|
public bool? IsClinicalDataBlind { get; set; }
|
||||||
//[ForeignKey("ReadModuleId")]
|
|
||||||
//public ReadModule ReadModuleModel { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
///// <summary>
|
||||||
|
/////
|
||||||
|
///// </summary>
|
||||||
|
//public decimal VisitNum { get; set; }
|
||||||
|
|
||||||
|
// [JsonIgnore]
|
||||||
|
///// <summary>
|
||||||
|
///// 对应
|
||||||
|
///// </summary>
|
||||||
|
//[ForeignKey("ReadModuleId")]
|
||||||
|
//public ReadModule ReadModuleModel { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 受试者
|
/// 受试者
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -119,11 +136,15 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[ForeignKey("SubjectVisitId")]
|
[ForeignKey("SubjectVisitId")]
|
||||||
public SubjectVisit SubjectVisit { get; set; }
|
public SubjectVisit SubjectVisit { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialId")]
|
||||||
|
public Trial Trial { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 阅片配置的类型
|
/// <summary>
|
||||||
/// </summary>
|
/// 阅片配置的类型
|
||||||
public ReadingSetType ReadingSetType { get; set; }
|
/// </summary>
|
||||||
|
public ReadingSetType ReadingSetType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,8 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public List<TrialSite> TrialSiteList { get; set; } = new List<TrialSite>();
|
public List<TrialSite> TrialSiteList { get; set; } = new List<TrialSite>();
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<TrialSiteUser> TrialSiteUserList { get; set; } = new List<TrialSiteUser>();
|
public List<TrialSiteUser> TrialSiteUserList { get; set; } = new List<TrialSiteUser>();
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ReadModule> ReadModuleList { get; set; } = new List<ReadModule>();
|
||||||
|
|
||||||
|
|
||||||
public Guid IndicationTypeId { get; set; } = Guid.Empty;
|
public Guid IndicationTypeId { get; set; } = Guid.Empty;
|
||||||
|
@ -83,8 +85,8 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public virtual ICollection<TrialStatusDetail> ClinicalTrialProjectDetails { get; set; }
|
public virtual ICollection<TrialStatusDetail> ClinicalTrialProjectDetails { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public virtual ICollection<TrialDictionary> TrialDicList { get; set; }
|
public virtual ICollection<TrialDictionary> TrialDicList { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
|
||||||
|
|
||||||
[StringLength(100)]
|
[StringLength(100)]
|
||||||
public string TrialCode { get; set; } = string.Empty;
|
public string TrialCode { get; set; } = string.Empty;
|
||||||
|
|
|
@ -121,6 +121,8 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public Guid? DeleteUserId { get; set; }
|
public Guid? DeleteUserId { get; set; }
|
||||||
|
|
||||||
public bool IsReReadingOrBackInfluenceAnalysis { get; set; }
|
public bool IsReReadingOrBackInfluenceAnalysis { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ClinicalForm> ClinicalFormList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public Guid? ClaimUserId { get; set; }
|
public Guid? ClaimUserId { get; set; }
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
||||||
|
{
|
||||||
|
//public class ClinicalFromConfigration : IEntityTypeConfiguration<ClinicalForm>
|
||||||
|
//{
|
||||||
|
|
||||||
|
|
||||||
|
// public void Configure(EntityTypeBuilder<ClinicalForm> builder)
|
||||||
|
// {
|
||||||
|
// builder
|
||||||
|
// .HasOne(s => s.ReadingClinicalData)
|
||||||
|
// .WithMany(c => c.ClinicalFormList)
|
||||||
|
// .HasForeignKey(s => new { s.SubjectId, s.ReadingId })
|
||||||
|
// .HasPrincipalKey(c => new { c.SubjectId, c.ReadingId });
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
//}
|
||||||
|
}
|
Loading…
Reference in New Issue