代码修改

IRC_NewDev
he 2024-08-01 10:35:57 +08:00
parent d1e21a9f4b
commit ee43a5dc9d
2 changed files with 148 additions and 70 deletions

View File

@ -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,6 +890,9 @@ namespace IRaCIS.Application.Services
}).ToList(),
});
// 是否获取所有一致性分析的数据
if(!inDto.IsGetAllConsistencyAnalysis)
{
// 原来的非PDF
var otherQuesy = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId)
@ -928,6 +931,8 @@ namespace IRaCIS.Application.Services
resultQuery = resultQuery.Union(otherQuesy);
}
}
else
{
resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
@ -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();
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)
return result;
}
/// <summary>
/// 新增或修改一致性分析临床数据
/// </summary>
/// <param name="indto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateConsistencyAnalysisReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto)
{
item.ClinicalTableData = new ClinicalDataTable()
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())
{
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
PreviousOtherList = previousOtherList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
PreviousSurgeryList = previousSurgeryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
};
//---存在同类型的临床数据,操作失败
return 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()
{
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

View File

@ -234,6 +234,22 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary>
public bool SelectIsSign { get; set; } = true;
/// <summary>
/// 是否查询所有的一致性分析临床数据 (为否只查询PDF)
/// </summary>
public bool IsGetAllConsistencyAnalysis { get; set; } = true;
}
public class GetConsistencyAnalysisReadingClinicalDataListInDto
{
[NotDefault]
public Guid SubjectId { get; set; }
[NotDefault]
public Guid VisitTaskId { get; set; }
[NotDefault]
public Guid TrialId { get; set; }
}
/// <summary>