Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
commit
a52aac876a
|
@ -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,58 @@ 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>
|
||||||
|
/// 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,27 @@
|
||||||
<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.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>();
|
||||||
|
|
|
@ -2499,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临床数据
|
||||||
|
@ -2542,6 +2549,13 @@
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
</member>
|
</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确认列表
|
||||||
|
@ -2556,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 确认临床数据
|
||||||
|
@ -2738,6 +2766,36 @@
|
||||||
<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.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>
|
||||||
临床级别
|
临床级别
|
||||||
|
@ -2748,16 +2806,16 @@
|
||||||
受试者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.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
|
||||||
|
@ -10687,6 +10745,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 阅片人筛选
|
||||||
|
|
|
@ -87,6 +87,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>
|
||||||
|
@ -199,6 +218,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
SubjectId=x.SubjectId,
|
SubjectId=x.SubjectId,
|
||||||
SubjectCode=x.Subject.Code,
|
SubjectCode=x.Subject.Code,
|
||||||
TrialId=inDto.TrialId,
|
TrialId=inDto.TrialId,
|
||||||
|
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,
|
ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id,
|
||||||
ClinicalDataSetEnName= x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
ClinicalDataSetEnName= x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||||
|
@ -320,8 +345,20 @@ 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,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
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();
|
||||||
|
@ -335,7 +372,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已经确认!");
|
||||||
}
|
}
|
||||||
|
@ -396,7 +433,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);
|
||||||
|
@ -427,6 +470,28 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.Ok(true);
|
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确认列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -437,6 +502,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
||||||
.WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId)
|
.WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId)
|
||||||
|
.WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm)
|
||||||
|
.WhereIf(inDto.IsPMConfirm != null, x => x.IsPMConfirm == inDto.IsPMConfirm)
|
||||||
.WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
.WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
||||||
.Select(x => new GetCRCConfirmListOutDto()
|
.Select(x => new GetCRCConfirmListOutDto()
|
||||||
|
@ -444,11 +511,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
SubjectId = x.SubjectId,
|
SubjectId = x.SubjectId,
|
||||||
IsCRCConfirm = x.IsCRCConfirm,
|
IsCRCConfirm = x.IsCRCConfirm,
|
||||||
|
VisitBlindName=x.SubjectVisit.BlindName,
|
||||||
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
||||||
ReadingSetType = x.ReadingSetType,
|
ReadingSetType = x.ReadingSetType,
|
||||||
IsPMConfirm = x.IsPMConfirm,
|
IsPMConfirm = x.IsPMConfirm,
|
||||||
SubjectCode = x.Subject.Code,
|
SubjectCode = x.Subject.Code,
|
||||||
ReadModuleId = x.Id,
|
ReadModuleId = x.Id,
|
||||||
|
ModuleName=x.ModuleName,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -460,6 +529,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.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,
|
||||||
|
@ -468,7 +538,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
IsHaveTableQuestion=x.ClinicalDataTrialSet.TrialClinicalQuestionList.Any(y=>y.ClinicalQuestionType== ReadingQestionType.Table),
|
IsHaveTableQuestion=x.ClinicalDataTrialSet.TrialClinicalQuestionList.Any(y=>y.ClinicalQuestionType== ReadingQestionType.Table),
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId)
|
var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId
|
||||||
|
&&x.ClinicalForm.ClinicalDataTrialSet.UploadRole== UploadRole.CRC
|
||||||
|
&&(x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataLevel==ClinicalLevel.ImageRead|| x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead))
|
||||||
.Select(x => new GetCRCBeConfirm
|
.Select(x => new GetCRCBeConfirm
|
||||||
{
|
{
|
||||||
CheckDate = x.ClinicalForm.CheckDate ?? default(DateTime),
|
CheckDate = x.ClinicalForm.CheckDate ?? default(DateTime),
|
||||||
|
@ -498,7 +570,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
if (x.ReadingSetType == ReadingSetType.ImageReading)
|
if (x.ReadingSetType == ReadingSetType.ImageReading)
|
||||||
{
|
{
|
||||||
x.ClinicalFormList = 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),
|
||||||
|
@ -511,7 +584,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x.ClinicalFormList = 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),
|
||||||
|
@ -553,10 +626,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<List<GetClinicalTableListOutDto>> GetClinicalTableList(GetClinicalTableListInDto inDto)
|
public async Task<(List<GetClinicalTableListOutDto>,object)> GetClinicalTableList(GetClinicalTableListInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
var readModule=await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync():
|
var readModule=await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
|
|
||||||
var confirmList = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
var confirmList = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
{
|
{
|
||||||
|
@ -585,13 +658,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
List<GetClinicalTableListOutDto> result = new List<GetClinicalTableListOutDto>();
|
List<GetClinicalTableListOutDto> result = new List<GetClinicalTableListOutDto>();
|
||||||
clinicalDataTrialSetIds.ForEach(x => {
|
clinicalDataTrialSetIds.ForEach(x => {
|
||||||
GetClinicalTableListOutDto dto = new GetClinicalTableListOutDto();
|
GetClinicalTableListOutDto dto = new GetClinicalTableListOutDto();
|
||||||
|
dto.ModuleName = readModule.ModuleName;
|
||||||
dto.ClinicalDataSetName = confirmList.Where(y => y.ClinicalDataTrialSetId == x).Select(y => y.ClinicalDataSetName).First();
|
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.QuestionList = questionList.Where(y => y.TrialClinicalId == x).OrderBy(y => y.ShowOrder).ToList();
|
||||||
dto.AnswerList = new List<Dictionary<string, string>>();
|
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();
|
var ClinicalFormIds= answers.Where(y => y.ClinicalDataTrialSetId == x).OrderBy(x => x.CheckDate).Select(x => x.ClinicalFormId).Distinct().ToList();
|
||||||
ClinicalFormIds.ForEach(z =>
|
ClinicalFormIds.ForEach(z =>
|
||||||
{
|
{
|
||||||
var dic = answers.Where(y => y.ClinicalDataTrialSetId == x).OrderBy(y => y.CheckDate).ToDictionary(x => x.QuestionId.ToString(), x => x.Answer);
|
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("ClinicalFormId", z.ToString());
|
||||||
dic.Add("TrialId", inDto.TrialId.ToString());
|
dic.Add("TrialId", inDto.TrialId.ToString());
|
||||||
dic.Add("SubjectId", readModule.SubjectId.ToString());
|
dic.Add("SubjectId", readModule.SubjectId.ToString());
|
||||||
|
@ -602,7 +676,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
});
|
});
|
||||||
result.Add(dto);
|
result.Add(dto);
|
||||||
});
|
});
|
||||||
return result;
|
return (result, new
|
||||||
|
{
|
||||||
|
readModule.ModuleName,
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -613,8 +690,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<List<GetClinicalDateListOutDto>> GetClinicalDateList(GetCRCBeConfirmListInDto inDto)
|
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()
|
var confirmList = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
{
|
{
|
||||||
ReadModuleId = inDto.ReadModuleId,
|
ReadModuleId = inDto.ReadModuleId,
|
||||||
|
@ -633,7 +711,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
result.Add(new GetClinicalDateListOutDto()
|
result.Add(new GetClinicalDateListOutDto()
|
||||||
{
|
{
|
||||||
|
|
||||||
ClinicalDataSetName = confirmList.Where(y => y.ClinicalDataTrialSetId == x).Select(y => y.ClinicalDataSetName).First(),
|
ClinicalDataSetName = confirmList.Where(y => y.ClinicalDataTrialSetId == x).Select(y => y.ClinicalDataSetName).First(),
|
||||||
DateList = confirmList.Where(y => y.ClinicalDataTrialSetId == x).ToList()
|
DateList = confirmList.Where(y => y.ClinicalDataTrialSetId == x).ToList()
|
||||||
|
|
||||||
|
@ -641,7 +718,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return (result,new {
|
||||||
|
readModule.ModuleName,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -759,7 +838,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
||||||
{
|
{
|
||||||
IsPMConfirm = false
|
IsPMConfirm = true
|
||||||
});
|
});
|
||||||
|
|
||||||
await _readModuleRepository.SaveChangesAsync();
|
await _readModuleRepository.SaveChangesAsync();
|
||||||
|
|
|
@ -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"]);
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ 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<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 +38,7 @@ 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<PreviousOther> previousOtherRepository,
|
IRepository<PreviousOther> previousOtherRepository,
|
||||||
IRepository<PreviousSurgery> previousSurgeryRepository,
|
IRepository<PreviousSurgery> previousSurgeryRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||||
|
@ -53,6 +54,7 @@ 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._previousOtherRepository = previousOtherRepository;
|
this._previousOtherRepository = previousOtherRepository;
|
||||||
this._previousSurgeryRepository = previousSurgeryRepository;
|
this._previousSurgeryRepository = previousSurgeryRepository;
|
||||||
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||||
|
@ -676,7 +678,78 @@ namespace IRaCIS.Application.Services
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var result = await resultQuery.ToListAsync();
|
var result = await resultQuery.ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 这里处理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.Where(x => x.ReadModuleId == readModule.Id).Select(x => new{
|
||||||
|
ClinicalFormId= x.ClinicalFormId,
|
||||||
|
CheckDate= x.ClinicalForm.CheckDate,
|
||||||
|
ClinicalDataTrialSetId= x.ClinicalForm.ClinicalDataTrialSetId
|
||||||
|
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
var setIds = moduleCriterionFromList.Select(x=>x.ClinicalDataTrialSetId).Distinct().ToList();
|
||||||
|
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && (x.ClinicalDataLevel == ClinicalLevel.OncologyRead || x.ClinicalDataLevel == ClinicalLevel.ImageRead))
|
||||||
|
.Where(x => setIds.Contains(x.Id))
|
||||||
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||||
|
SubjectId = inDto.SubjectId,
|
||||||
|
ReadingId = default(Guid),
|
||||||
|
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.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
result.AddRange(clinicalresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 根据标准
|
// 根据标准
|
||||||
if (inDto.VisitTaskId != null)
|
if (inDto.VisitTaskId != null)
|
||||||
{
|
{
|
||||||
|
@ -750,6 +823,73 @@ namespace IRaCIS.Application.Services
|
||||||
});
|
});
|
||||||
|
|
||||||
var result = await resultQuery.ToListAsync();
|
var result = await resultQuery.ToListAsync();
|
||||||
|
|
||||||
|
// 这里处理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).Select(x => new {
|
||||||
|
ClinicalFormId = x.ClinicalFormId,
|
||||||
|
CheckDate = x.ClinicalForm.CheckDate,
|
||||||
|
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId
|
||||||
|
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
var setIds = moduleCriterionFromList.Select(x => x.ClinicalDataTrialSetId).Distinct().ToList();
|
||||||
|
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && (x.ClinicalDataLevel == ClinicalLevel.OncologyRead || x.ClinicalDataLevel == ClinicalLevel.ImageRead))
|
||||||
|
.Where(x => setIds.Contains(x.Id))
|
||||||
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||||
|
SubjectId = inDto.SubjectId,
|
||||||
|
ReadingId = default(Guid),
|
||||||
|
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.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
result.AddRange(clinicalresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//result = result.Where(x => !(x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
//result = result.Where(x => !(x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
||||||
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; }
|
||||||
|
@ -28,8 +32,32 @@ 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; }
|
||||||
|
|
||||||
|
/// <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 string SubjectCode { get; set; }
|
||||||
public Guid ClinicalDataTrialSetId { get; set; }
|
public Guid ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
|
@ -99,9 +127,20 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public string Answer { get; set; } = string.Empty;
|
public string Answer { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class GetPMConfirmListInDto: PageInput
|
||||||
|
{
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class GetCRCConfirmListInDto:PageInput
|
public class GetCRCConfirmListInDto:PageInput
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public bool? IsCRCConfirm { get; set; }
|
||||||
|
|
||||||
|
public bool? IsPMConfirm { get; set; }
|
||||||
|
|
||||||
public Guid? TrialReadingCriterionId { get; set; }
|
public Guid? TrialReadingCriterionId { get; set; }
|
||||||
|
|
||||||
public Guid? SubjectId { get; set; }
|
public Guid? SubjectId { get; set; }
|
||||||
|
@ -122,6 +161,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
{
|
{
|
||||||
public string ClinicalDataSetName { get; set; }
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public List<GetCRCBeConfirmListOutDto> DateList { get; set; }
|
public List<GetCRCBeConfirmListOutDto> DateList { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,6 +185,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public class GetClinicalTableListOutDto: GetClinicalQuestionAnswerListOutDto
|
public class GetClinicalTableListOutDto: GetClinicalQuestionAnswerListOutDto
|
||||||
{
|
{
|
||||||
public string ClinicalDataSetName { get; set; }
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 模块名称
|
||||||
|
/// </summary>
|
||||||
|
public string ModuleName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -181,6 +226,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
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; }
|
||||||
|
@ -210,6 +259,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
public Guid ReadModuleId { get; set; }
|
public Guid ReadModuleId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 模块名称
|
||||||
|
/// </summary>
|
||||||
|
public string ModuleName { get; set; }
|
||||||
|
|
||||||
|
public string VisitBlindName { get; set; }
|
||||||
|
|
||||||
public bool IsPMConfirm { get; set; }
|
public bool IsPMConfirm { get; set; }
|
||||||
|
|
||||||
public ReadingSetType ReadingSetType { get; set; }
|
public ReadingSetType ReadingSetType { get; set; }
|
||||||
|
@ -230,6 +286,14 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </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> ClinicalFormList { get; set; }
|
public List<GetCRCBeConfirmListOutDto> ClinicalFormList { get; set; }
|
||||||
|
|
||||||
|
@ -248,11 +312,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
}
|
}
|
||||||
public class SubmitClinicalFormInDto
|
public class SubmitClinicalFormInDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// VisitId
|
|
||||||
/// </summary>
|
|
||||||
public Guid? VisitId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// VisitId
|
/// VisitId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -363,6 +363,10 @@ 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>
|
||||||
/// 是否签名
|
/// 是否签名
|
||||||
|
@ -395,6 +399,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 +410,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,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Interface
|
||||||
{
|
{
|
||||||
public interface IClinicalAnswerService
|
public interface IClinicalAnswerService
|
||||||
{
|
{
|
||||||
|
Task<IResponseOutput> CRCSignClinicalData(CRCSignClinicalDataInDto inDto);
|
||||||
|
|
||||||
Task AutoAddCRCClinical(AutoAddClinicalInDto inDto);
|
Task AutoAddCRCClinical(AutoAddClinicalInDto inDto);
|
||||||
|
|
||||||
|
Task<IResponseOutput> PMConfirmClinical(CRCConfirmClinicalInDto inDto);
|
||||||
|
|
||||||
|
Task<IResponseOutput> SubmitClinicalForm(SubmitClinicalFormInDto inDto);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -21,15 +21,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,6 +298,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()
|
||||||
|
});
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1924,6 +1924,9 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
|
|
||||||
HaveUploaded = 1,
|
HaveUploaded = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 待核查
|
||||||
|
/// </summary>
|
||||||
HaveChecked = 2,
|
HaveChecked = 2,
|
||||||
|
|
||||||
HaveSigned = 3
|
HaveSigned = 3
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -119,6 +119,10 @@ 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>
|
||||||
/// 阅片配置的类型
|
/// 阅片配置的类型
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue