IsClinicalDataSign IsNeedClinicalDataSign
This commit is contained in:
+97
-18
@@ -19,7 +19,7 @@ namespace IRaCIS.Application.Services
|
||||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||
private readonly IRepository<PreviousPDF> _previousPDFRepository;
|
||||
|
||||
|
||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
private readonly IRepository<PreviousHistory> _previousHistoryRepository;
|
||||
private readonly IRepository<PreviousOther> _previousOtherRepository;
|
||||
@@ -35,7 +35,7 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<PreviousPDF> previousPDFRepository,
|
||||
IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<PreviousHistory> previousHistoryRepository,
|
||||
|
||||
|
||||
IRepository<PreviousOther> previousOtherRepository,
|
||||
IRepository<PreviousSurgery> previousSurgeryRepository,
|
||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||
@@ -161,7 +161,7 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
await this.AddCRCClinicalData(inDto);
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
|
||||
.Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.ImageRead && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.OncologyRead)
|
||||
@@ -248,11 +248,16 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
public async Task<IResponseOutput> ReadClinicalDataSign(ReadingClinicalDataSignIndto inDto)
|
||||
{
|
||||
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.ReadingClinicalDataId, x => new ReadingClinicalData()
|
||||
{
|
||||
IsSign = true,
|
||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
||||
});
|
||||
var data = await _readingClinicalDataRepository.FirstOrDefaultAsync(t => t.Id == inDto.ReadingClinicalDataId);
|
||||
|
||||
data.IsSign = true;
|
||||
data.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned;
|
||||
|
||||
//await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.ReadingClinicalDataId, x => new ReadingClinicalData()
|
||||
//{
|
||||
// IsSign = true,
|
||||
// ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
||||
//});
|
||||
|
||||
var result = await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
|
||||
@@ -261,9 +266,83 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
await this.iServiceProvider.GetService<IReadingImageTaskService>().AddOncologyTask(readingId);
|
||||
|
||||
await DealVisiTaskClinicalDataSignedAsync(data.TrialId, data.SubjectId, data.ReadingId, data.IsVisit, inDto.TrialReadingCriterionId);
|
||||
|
||||
return ResponseOutput.Result(result);
|
||||
}
|
||||
|
||||
//处理 任务 临床数据是否签名
|
||||
private async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
|
||||
{
|
||||
//获取确认的临床数据配置
|
||||
var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).ToList();
|
||||
|
||||
var criterionType = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCritrialId).Select(t => t.CriterionType).FirstOrDefaultAsync();
|
||||
|
||||
// 获取确认的项目标准 废弃 签名的时候 传递标准Id
|
||||
//var confirmedCtritrialList = _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.ReadingInfoSignTime != null).Select(t => new { t.Id, t.CriterionType }).ToList();
|
||||
|
||||
var needSignCount = 0;
|
||||
var haveSignedCount = _readingClinicalDataRepository.Where(t => t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
|
||||
|
||||
if (isVisit)
|
||||
{
|
||||
var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
|
||||
|
||||
//判断是否基线
|
||||
if (isBaseLine)
|
||||
{
|
||||
//CRC 的自动签名 不用管 只用处理PM 的就好
|
||||
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit) && t.UploadRole == UploadRole.PM).Count();
|
||||
}
|
||||
else
|
||||
{
|
||||
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.SubjectVisit && t.UploadRole == UploadRole.PM).Count();
|
||||
}
|
||||
|
||||
if (needSignCount == haveSignedCount )
|
||||
{
|
||||
//将该标准 该subject 该访视 任务临床数据状态变更
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SourceSubjectVisitId == readingId, u => new VisitTask()
|
||||
{
|
||||
IsClinicalDataSign = true
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//判断是影像学 还是肿瘤学阅片
|
||||
var readingSetType = await _readModuleRepository.Where(t => t.Id == readingId).Select(t => t.ReadingPeriodSet.ReadingSetType).FirstOrDefaultAsync();
|
||||
|
||||
//影像学
|
||||
if (readingSetType == ReadingSetType.ImageReading)
|
||||
{
|
||||
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.ImageRead).Count();
|
||||
}
|
||||
//肿瘤学
|
||||
else
|
||||
{
|
||||
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
|
||||
}
|
||||
|
||||
if (needSignCount == haveSignedCount)
|
||||
{
|
||||
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
|
||||
{
|
||||
IsClinicalDataSign = true
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
[HttpPut]
|
||||
public async Task<IResponseOutput> PMClinicalDataConfirm(PMClinicalDataConfirmCommand command)
|
||||
{
|
||||
@@ -329,7 +408,7 @@ namespace IRaCIS.Application.Services
|
||||
.WhereIf(inDto.IsVisit && !inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||
.WhereIf(!inDto.IsVisit, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataLevel == ClinicalLevel.OncologyRead)
|
||||
.WhereIf(readModule != null, x => x.ClinicalDataLevel == keyValuePairs[readModule.ModuleType])
|
||||
//.WhereIf(criterion!=null,x=>x.CriterionEnumList.Contains((int)criterion.CriterionType))
|
||||
.WhereIf(criterion!=null,x=>x.CriterionEnumList.Contains((int)criterion.CriterionType))
|
||||
.Select(x => new GetTrialClinicalDataSelectOutDto()
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||
@@ -422,7 +501,7 @@ namespace IRaCIS.Application.Services
|
||||
}
|
||||
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
||||
|
||||
|
||||
|
||||
var result = await this.GetReadingClinicalList(inDto);
|
||||
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||
|
||||
@@ -465,12 +544,12 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||
SubjectId = x.SubjectId,
|
||||
ReadingId= x.ReadingId,
|
||||
ReadingId = x.ReadingId,
|
||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
||||
IsSign = x.IsSign,
|
||||
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||
CriterionEnumList= x.ClinicalDataTrialSet.CriterionEnumList,
|
||||
CriterionEnumList = x.ClinicalDataTrialSet.CriterionEnumList,
|
||||
Id = x.Id,
|
||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
||||
@@ -488,11 +567,11 @@ namespace IRaCIS.Application.Services
|
||||
// 根据标准
|
||||
if (inDto.VisitTaskId != null)
|
||||
{
|
||||
var criterionType = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x=>x.TrialReadingCriterion).Select(x => x.TrialReadingCriterion.CriterionType).FirstNotNullAsync();
|
||||
var criterionType = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).Select(x => x.TrialReadingCriterion.CriterionType).FirstNotNullAsync();
|
||||
result = result.Where(x => x.CriterionEnumList.Contains((int)criterionType)).ToList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
result = result.Where(x => !(x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
||||
// 需要排除表格为空的数据
|
||||
|
||||
@@ -521,18 +600,18 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
|
||||
var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstNotNullAsync();
|
||||
|
||||
|
||||
|
||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId).Include(x => x.ClinicalDataTrialSet)
|
||||
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
||||
//.WhereIf(inDto.UploadRole == UploadRole.CRC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
|
||||
|
||||
.Where(x=>x.ClinicalDataTrialSet.CriterionEnumListStr.Contains(((int)criterionType).ToString()))
|
||||
|
||||
.Where(x => x.ClinicalDataTrialSet.CriterionEnumListStr.Contains(((int)criterionType).ToString()))
|
||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||
SubjectId = x.SubjectId,
|
||||
ReadingId=x.ReadingId,
|
||||
ReadingId = x.ReadingId,
|
||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
||||
IsSign = x.IsSign,
|
||||
|
||||
Reference in New Issue
Block a user