S-49 任务的临床状态维护
parent
53fab12535
commit
bd7f840536
|
@ -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,6 +61,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
||||||
IRepository<ClinicalForm> clinicalFormRepository,
|
IRepository<ClinicalForm> clinicalFormRepository,
|
||||||
IRepository<Subject> subjectRepository,
|
IRepository<Subject> subjectRepository,
|
||||||
|
IReadingClinicalDataService iReadingClinicalDataService
|
||||||
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
||||||
IRepository<ReadModule> readModuleRepository,
|
IRepository<ReadModule> readModuleRepository,
|
||||||
IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
|
@ -78,7 +82,7 @@ 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;
|
||||||
|
@ -860,6 +864,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
IsPMConfirm = true
|
IsPMConfirm = true
|
||||||
});
|
});
|
||||||
|
await _readModuleRepository.SaveChangesAsync();
|
||||||
|
await _iReadingClinicalDataService.DealVisiTaskClinicalDataSignedAsync(inDto.TrialId, inDto.SubjectId, inDto.ReadModuleId, false, readModuleData.TrialReadingCriterionId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -870,11 +876,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
});
|
});
|
||||||
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== x.Id);
|
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== x.Id);
|
||||||
|
|
||||||
|
await _readModuleRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
await _readModuleRepository.SaveChangesAsync();
|
|
||||||
|
|
||||||
return ResponseOutput.Ok(true);
|
return ResponseOutput.Ok(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,7 +303,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();
|
||||||
|
@ -321,6 +321,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)
|
||||||
{
|
{
|
||||||
|
@ -349,21 +351,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()
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue