代码修改
parent
d1e21a9f4b
commit
ee43a5dc9d
|
@ -38,6 +38,7 @@ namespace IRaCIS.Application.Services
|
|||
private readonly IRepository<Subject> _subjectRepository;
|
||||
private readonly IRepository<ReadModule> _readModuleRepository;
|
||||
private readonly IRepository<ReadingClinicalDataPDF> _readingClinicalDataPDFRepository;
|
||||
private readonly IRepository<ReadingConsistentClinicalDataPDF> _readingConsistentClinicalDataPDFRepository;
|
||||
|
||||
public ReadingClinicalDataService(IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
||||
IRepository<ReadingConsistentClinicalData> readingConsistentClinicalDataRepository,
|
||||
|
@ -56,6 +57,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
IRepository<ReadModule> readModuleRepository,
|
||||
IRepository<ReadingClinicalDataPDF> readingClinicalDataPDFRepository,
|
||||
IRepository<ReadingConsistentClinicalDataPDF> readingConsistentClinicalDataPDFRepository,
|
||||
IRepository<VisitTask> visitTaskRepository)
|
||||
{
|
||||
this._readingClinicalDataRepository = readingClinicalDataRepository;
|
||||
|
@ -73,6 +75,7 @@ namespace IRaCIS.Application.Services
|
|||
this._subjectRepository = subjectRepository;
|
||||
this._readModuleRepository = readModuleRepository;
|
||||
this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository;
|
||||
this._readingConsistentClinicalDataPDFRepository = readingConsistentClinicalDataPDFRepository;
|
||||
this._visitTaskRepository = visitTaskRepository;
|
||||
}
|
||||
|
||||
|
@ -91,9 +94,6 @@ namespace IRaCIS.Application.Services
|
|||
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
|
||||
.Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId && x.ReadingId == indto.ReadingId && x.StudyId == indto.StudyId);
|
||||
|
||||
|
||||
|
||||
|
||||
if (await existsQuery.AnyAsync())
|
||||
{
|
||||
//---存在同类型的临床数据,操作失败
|
||||
|
@ -845,7 +845,7 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
||||
inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId;
|
||||
|
||||
inDto.TrialReadingCriterionId = visitTask.TrialReadingCriterionId;
|
||||
|
||||
if (visitTask.IsAnalysisCreate && visitTask.IsSelfAnalysis == true)
|
||||
{
|
||||
|
@ -890,43 +890,48 @@ namespace IRaCIS.Application.Services
|
|||
}).ToList(),
|
||||
});
|
||||
|
||||
// 原来的非PDF
|
||||
var otherQuesy = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||
.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)
|
||||
.Where(x => x.ReadingId == inDto.ReadingId)
|
||||
.WhereIf(inDto.TrialReadingCriterionId != null, x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
|
||||
.Where(x => x.ClinicalDataTrialSet.ClinicalUploadType != ClinicalUploadType.PDF)
|
||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||
// 是否获取所有一致性分析的数据
|
||||
if(!inDto.IsGetAllConsistencyAnalysis)
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||
SubjectId = x.SubjectId,
|
||||
ReadingId = x.ReadingId,
|
||||
ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
||||
IsSign = x.IsSign,
|
||||
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||
CriterionEnumList = x.ClinicalDataTrialSet.CriterionEnumList,
|
||||
TrialClinicalDataSetCriteriaList = x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
||||
Id = x.Id,
|
||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
||||
IsBlind = x.IsBlind,
|
||||
IsComplete = x.IsComplete,
|
||||
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(),
|
||||
// 原来的非PDF
|
||||
var otherQuesy = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||
.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)
|
||||
.Where(x => x.ReadingId == inDto.ReadingId)
|
||||
.WhereIf(inDto.TrialReadingCriterionId != null, x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
|
||||
.Where(x => x.ClinicalDataTrialSet.ClinicalUploadType != ClinicalUploadType.PDF)
|
||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||
SubjectId = x.SubjectId,
|
||||
ReadingId = x.ReadingId,
|
||||
ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
||||
IsSign = x.IsSign,
|
||||
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||
CriterionEnumList = x.ClinicalDataTrialSet.CriterionEnumList,
|
||||
TrialClinicalDataSetCriteriaList = x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
||||
Id = x.Id,
|
||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
||||
IsBlind = x.IsBlind,
|
||||
IsComplete = x.IsComplete,
|
||||
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(),
|
||||
});
|
||||
|
||||
resultQuery = resultQuery.Union(otherQuesy);
|
||||
resultQuery = resultQuery.Union(otherQuesy);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1112,52 +1117,109 @@ namespace IRaCIS.Application.Services
|
|||
#endregion
|
||||
|
||||
|
||||
#region 一致性分析
|
||||
#region 一致性分析临床数据
|
||||
/// <summary>
|
||||
/// 获取阅片临床数据列表
|
||||
/// 获取阅片临床数据列表 (在任务列表)
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<(List<GetReadingClinicalDataListOutDto>, object)> GetConsistencyAnalysisReadingClinicalDataList(GetReadingClinicalDataListIndto inDto)
|
||||
public async Task<List<GetReadingClinicalDataListOutDto>> GetConsistencyAnalysisReadingClinicalDataList(GetConsistencyAnalysisReadingClinicalDataListInDto inDto)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
||||
|
||||
|
||||
var result = await this.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto()
|
||||
{
|
||||
ClinicalDataTrialSetId = inDto.ClinicalDataTrialSetId,
|
||||
GetClinicalType = inDto.GetClinicalType,
|
||||
SubjectId = inDto.SubjectId,
|
||||
TrialId = inDto.TrialId,
|
||||
SelectIsSign = false,
|
||||
ReadingId = inDto.ReadingId,
|
||||
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
||||
IsGetAllConsistencyAnalysis = false,
|
||||
});
|
||||
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
var previousHistoryList = await _previousHistoryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
var previousOtherList = await _previousOtherRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
var previousSurgeryList = await _previousSurgeryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
foreach (var item in result)
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 新增或修改一致性分析临床数据
|
||||
/// </summary>
|
||||
/// <param name="indto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> AddOrUpdateConsistencyAnalysisReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto)
|
||||
{
|
||||
var existsQuery = _readingClinicalDataRepository
|
||||
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
|
||||
.Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId && x.ReadingId == indto.ReadingId && x.StudyId == indto.StudyId);
|
||||
|
||||
if (await existsQuery.AnyAsync())
|
||||
{
|
||||
item.ClinicalTableData = new ClinicalDataTable()
|
||||
//---存在同类型的临床数据,操作失败
|
||||
return ResponseOutput.NotOk(_localizer["ReadingClinicalData_DupTypeFail"]);
|
||||
}
|
||||
var clinicalDataTrialSet = (await _clinicalDataTrialSetRepository.Where(x => x.Id == indto.ClinicalDataTrialSetId).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
//subject 或者访视级别的 都是在访视传
|
||||
indto.IsVisit = clinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || clinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit;
|
||||
|
||||
if (indto.Id == null)
|
||||
{
|
||||
var entity = _mapper.Map<ReadingClinicalData>(indto);
|
||||
entity.ReadingClinicalDataPDFList = indto.AddFileList.Select(x => new ReadingClinicalDataPDF()
|
||||
{
|
||||
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(),
|
||||
};
|
||||
FileName = x.FileName,
|
||||
Path = x.Path,
|
||||
Size = x.Size,
|
||||
Type = x.Type,
|
||||
}).ToList();
|
||||
|
||||
entity.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded;
|
||||
entity.IsBlind = null;
|
||||
entity.IsComplete = null;
|
||||
entity.FileCount = entity.ReadingClinicalDataPDFList.Count;
|
||||
await _readingClinicalDataRepository.AddAsync(entity, true);
|
||||
var success = await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok(entity.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
var entity = (await _readingClinicalDataRepository.Where(t => t.Id == indto.Id, true).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
await _readingClinicalDataPDFRepository.BatchDeleteNoTrackingAsync(x => indto.DeleteFileIds.Contains(x.Id));
|
||||
|
||||
var addFileList = indto.AddFileList.Select(x => new ReadingClinicalDataPDF()
|
||||
{
|
||||
|
||||
FileName = x.FileName,
|
||||
Path = x.Path,
|
||||
Size = x.Size,
|
||||
Type = x.Type,
|
||||
ReadingClinicalDataId = entity.Id,
|
||||
}).ToList();
|
||||
|
||||
|
||||
|
||||
_mapper.Map(indto, entity);
|
||||
|
||||
//上传 或者删除了文件 核查状态需要重新确认
|
||||
|
||||
if (indto.AddFileList.Count > 0 || indto.AddFileList.Count > 0)
|
||||
{
|
||||
entity.IsComplete = null;
|
||||
entity.IsBlind = null;
|
||||
}
|
||||
|
||||
await _readingClinicalDataPDFRepository.AddRangeAsync(addFileList);
|
||||
|
||||
await _readingClinicalDataPDFRepository.SaveChangesAsync();
|
||||
|
||||
var fileCount = await _readingClinicalDataPDFRepository.Where(t => t.ReadingClinicalDataId == indto.Id).CountAsync();
|
||||
entity.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded;
|
||||
entity.IsSign = false;
|
||||
entity.FileCount = fileCount;
|
||||
var success = await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok(entity.Id);
|
||||
|
||||
}
|
||||
|
||||
return (result, new
|
||||
{
|
||||
IsCanAddClinicalData = false,
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
|
|
@ -234,12 +234,28 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
/// </summary>
|
||||
public bool SelectIsSign { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// 是否查询所有的一致性分析临床数据 (为否只查询PDF)
|
||||
/// </summary>
|
||||
public bool IsGetAllConsistencyAnalysis { get; set; } = true;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取访视列表
|
||||
/// </summary>
|
||||
public class GetReadingClinicalDataListIndto
|
||||
public class GetConsistencyAnalysisReadingClinicalDataListInDto
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid SubjectId { get; set; }
|
||||
[NotDefault]
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取访视列表
|
||||
/// </summary>
|
||||
public class GetReadingClinicalDataListIndto
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid SubjectId { get; set; }
|
||||
|
|
Loading…
Reference in New Issue