Uat_Study
he 2022-06-30 15:22:53 +08:00
parent d639afb8a0
commit 2281c50747
3 changed files with 113 additions and 3 deletions

View File

@ -51,6 +51,14 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateClinicalDataTrialSet(ClinicalDataTrialSetAddOrEdit indto)
{
var existsQuery = _clinicalDataTrialSetRepository
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
.Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName);
if (await existsQuery.AnyAsync())
{
return ResponseOutput.NotOk("存在同类型的临床数据,操作失败");
}
var entity = await _clinicalDataTrialSetRepository.InsertOrUpdateAsync(indto,true);
return ResponseOutput.Ok(entity.Id.ToString());
}
@ -63,6 +71,15 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateClinicalDataSystemSet(ClinicalDataSystemSetAddOrEdit indto)
{
var existsQuery = _clinicalDataSystemSetRepository
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
.Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName);
if (await existsQuery.AnyAsync())
{
return ResponseOutput.NotOk("存在同类型的临床数据,操作失败");
}
var entity = await _clinicalDataSystemSetRepository.InsertOrUpdateAsync(indto, true);
return ResponseOutput.Ok(entity.Id.ToString());
}

View File

@ -154,6 +154,20 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string Path { get; set; }
}
public class GetReadingOrTaskClinicalDataListInDto
{
[NotDefault]
public Guid SubjectId { get; set; }
[NotDefault]
public Guid TrialId { get; set; }
public Guid? ReadingId { get; set; }
public Guid? VisitTaskId { get; set; }
}
/// <summary>
/// 获取访视列表
/// </summary>

View File

@ -25,12 +25,15 @@ namespace IRaCIS.Application.Services
{
private readonly IRepository<ReadingClinicalData> _readingClinicalDataRepository;
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;
private readonly IRepository<PreviousSurgery> _previousSurgeryRepository;
private readonly IRepository<Subject> _subjectRepository;
private readonly IRepository<ReadModule> _readModuleRepository;
private readonly IRepository<ReadingClinicalDataPDF> _readingClinicalDataPDFRepository;
public ReadingClinicalDataService(IRepository<ReadingClinicalData> readingClinicalDataRepository,
@ -40,8 +43,10 @@ namespace IRaCIS.Application.Services
IRepository<PreviousHistory> previousHistoryRepository,
IRepository<PreviousOther> previousOtherRepository,
IRepository<PreviousSurgery> previousSurgeryRepository,
IRepository<ReadingClinicalDataPDF> readingClinicalDataPDFRepository
)
IRepository<Subject> subjectRepository,
IRepository<ReadModule> readModuleRepository,
IRepository<ReadingClinicalDataPDF> readingClinicalDataPDFRepository,
IRepository<VisitTask> visitTaskRepository)
{
this._readingClinicalDataRepository = readingClinicalDataRepository;
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
@ -50,7 +55,10 @@ namespace IRaCIS.Application.Services
this._previousHistoryRepository = previousHistoryRepository;
this._previousOtherRepository = previousOtherRepository;
this._previousSurgeryRepository = previousSurgeryRepository;
this._subjectRepository = subjectRepository;
this._readModuleRepository = readModuleRepository;
this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository;
this._visitTaskRepository = visitTaskRepository;
}
@ -276,6 +284,77 @@ namespace IRaCIS.Application.Services
return ResponseOutput.Result(result);
}
/// <summary>
/// 获取访视 阅片或任务临床数据
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<(List<GetReadingClinicalDataListOutDto>,object)> GetReadingOrTaskClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto)
{
var readingNameOrTaskBlindName = string.Empty;
if (inDto.ReadingId == null)
{
var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId;
readingNameOrTaskBlindName = visitTask.TaskBlindName;
}
if (readingNameOrTaskBlindName.IsNullOrEmpty())
{
readingNameOrTaskBlindName = await _subjectVisitRepository.Where(x => x.Id == inDto.ReadingId).Select(x => x.VisitName).FirstOrDefaultAsync();
if (readingNameOrTaskBlindName.IsNullOrEmpty())
{
readingNameOrTaskBlindName = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId).Select(x => x.ModuleName).FirstOrDefaultAsync();
}
}
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.Where(x => x.ReadingId == inDto.ReadingId||(x.SubjectId==inDto.SubjectId&&x.ClinicalDataTrialSet.ClinicalDataLevel==ClinicalLevel.Subject))
.Select(x => new GetReadingClinicalDataListOutDto()
{
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
SubjectId = x.SubjectId,
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
IsSign = x.IsSign,
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
Id = x.Id,
UploadRole = x.ClinicalDataTrialSet.UploadRole,
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
{
Id = y.Id,
FileName = y.FileName,
Path = y.Path,
CreateTime = y.CreateTime,
}).ToList()
});
var result = await resultQuery.ToListAsync();
result = result.Where(x => !(x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
foreach (var item in result)
{
item.ClinicalTableData = new ClinicalDataTable()
{
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 (result, new
{
SubjectCode = await _subjectRepository.Where(x => x.Id == inDto.SubjectId).Select(x => x.Code).FirstOrDefaultAsync(),
ReadingNameOrTaskBlindName = readingNameOrTaskBlindName,
});
}
/// <summary>
/// 获取阅片临床数据列表