修改一版

Uat_Study
he 2022-06-29 11:02:05 +08:00
parent 4e060c7093
commit a9afb9a478
3 changed files with 70 additions and 42 deletions

View File

@ -166,6 +166,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid ReadingId { get; set; } public Guid ReadingId { get; set; }
public UploadRole? UploadRole { get; set; } public UploadRole? UploadRole { get; set; }
public Guid TrialId { get; set; }
/// <summary>
/// 是否是访视
/// </summary>
public bool IsVisit { get; set; }
/// <summary>
/// 是否是基线
/// </summary>
public bool IsBaseLine { get; set; }
} }
public class GetReadingClinicalDataPDFListIndto:PageInput public class GetReadingClinicalDataPDFListIndto:PageInput

View File

@ -138,14 +138,14 @@ namespace IRaCIS.Application.Services
Path=x.ClinicalDataTrialSet.Path, Path=x.ClinicalDataTrialSet.Path,
}).ToListAsync() ; }).ToListAsync() ;
PageOutput<GetReadingClinicalDataListOutDto> clinicalData = await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto() PageOutput<GetReadingClinicalDataListOutDto> clinicalData = (await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto()
{ {
PageIndex = 1, PageIndex = 1,
PageSize = 9999, PageSize = 9999,
SubjectId = inDto.SubjectId, SubjectId = inDto.SubjectId,
ReadingId = inDto.SubjectVisitId, ReadingId = inDto.SubjectVisitId,
TrialId=inDto.TrialId,
}); })).Item1;
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync(); var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync(); var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
@ -285,26 +285,23 @@ namespace IRaCIS.Application.Services
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<PageOutput<GetReadingClinicalDataListOutDto>> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) public async Task<(PageOutput<GetReadingClinicalDataListOutDto>,object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto)
{ {
//var userPMTypes = new List<int>() { GetTrialClinicalDataSelectIndto getTrialClinicalDataSelectIndto = new GetTrialClinicalDataSelectIndto()
// (int)UserTypeEnum.ProjectManager, {
// (int)UserTypeEnum.SPM, ReadingId = inDto.ReadingId,
// (int)UserTypeEnum.CPM, TrialId = inDto.TrialId,
// (int)UserTypeEnum.IndependentReviewer, IsBaseLine = inDto.IsBaseLine,
// }; SubjectId = inDto.SubjectId,
IsVisit = inDto.IsVisit,
};
//if (userPMTypes.Contains(_userInfo.UserTypeEnumInt)) var clinicalDataList = await this.GetTrialClinicalDataSelect(getTrialClinicalDataSelectIndto);
//{
// inDto.UploadRole = UploadRole.PM;
//}
//else
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC) if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
{ {
inDto.UploadRole = UploadRole.CRC; inDto.UploadRole = UploadRole.CRC;
} }
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine); var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId) var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.Where(x => x.ReadingId == inDto.ReadingId) .Where(x => x.ReadingId == inDto.ReadingId)
@ -331,14 +328,9 @@ namespace IRaCIS.Application.Services
var result=await resultQuery.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, var result=await resultQuery.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField,
inDto.Asc); inDto.Asc);
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync(); 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 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(); var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
foreach (var item in result.CurrentPageData) foreach (var item in result.CurrentPageData)
{ {
item.ClinicalTableData = new ClinicalDataTable() item.ClinicalTableData = new ClinicalDataTable()
@ -350,7 +342,9 @@ namespace IRaCIS.Application.Services
} }
return result; return (result, new {
isCanAddClinicalData= clinicalDataList.Count()>0,
}) ;
} }

View File

@ -12,6 +12,7 @@ using IRaCIS.Core.Application.Service.Reading;
using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infra.EFCore.Common;
using Panda.DynamicWebApi.Attributes; using Panda.DynamicWebApi.Attributes;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Application.Services namespace IRaCIS.Application.Services
{ {
@ -30,6 +31,7 @@ namespace IRaCIS.Application.Services
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository; private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
private readonly IRepository<ClinicalDataSystemSet> _clinicalDataSystemSetRepository; private readonly IRepository<ClinicalDataSystemSet> _clinicalDataSystemSetRepository;
private readonly IRepository<Dictionary> _dictionaryRepository; private readonly IRepository<Dictionary> _dictionaryRepository;
private readonly IRepository<Trial> _trialRepository;
private readonly IReadingImageTaskService _readingImageTaskService; private readonly IReadingImageTaskService _readingImageTaskService;
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswer; private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswer;
private readonly IRepository<PreviousPDF> _previousPDFRepository; private readonly IRepository<PreviousPDF> _previousPDFRepository;
@ -43,6 +45,7 @@ namespace IRaCIS.Application.Services
IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository, IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository,
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository, IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
IRepository<Dictionary> dictionaryRepository, IRepository<Dictionary> dictionaryRepository,
IRepository<Trial> trialRepository,
IReadingImageTaskService readingImageTaskService, IReadingImageTaskService readingImageTaskService,
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswer, IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswer,
IRepository<PreviousPDF> previousPDFRepository IRepository<PreviousPDF> previousPDFRepository
@ -56,6 +59,7 @@ namespace IRaCIS.Application.Services
this._clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository; this._clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
this._clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository; this._clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository;
this._dictionaryRepository = dictionaryRepository; this._dictionaryRepository = dictionaryRepository;
this._trialRepository = trialRepository;
this._readingImageTaskService = readingImageTaskService; this._readingImageTaskService = readingImageTaskService;
this._readingTaskQuestionAnswer = readingTaskQuestionAnswer; this._readingTaskQuestionAnswer = readingTaskQuestionAnswer;
this._previousPDFRepository = previousPDFRepository; this._previousPDFRepository = previousPDFRepository;
@ -131,28 +135,28 @@ namespace IRaCIS.Application.Services
// return ResponseOutput.Ok(result); // return ResponseOutput.Ok(result);
//} //}
/// <summary> ///// <summary>
/// 验证系统问题是否设置裁判答案 ///// 验证系统问题是否设置裁判答案
/// </summary> ///// </summary>
/// <param name="inDto"></param> ///// <param name="inDto"></param>
/// <returns></returns> ///// <returns></returns>
public async Task<IResponseOutput> VerifySystemQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto) //public async Task<IResponseOutput> VerifySystemQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto)
{ //{
var result = await _readingQuestionTrialRepository.AnyAsync(x => x.ReadingQuestionSystemId == inDto.Id&&x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None); // var result = await _readingQuestionTrialRepository.AnyAsync(x => x.ReadingQuestionSystemId == inDto.Id&&x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None);
return ResponseOutput.Ok(result); // return ResponseOutput.Ok(result);
} //}
/// <summary> ///// <summary>
/// 验证项目问题是否设置裁判答案 ///// 验证项目问题是否设置裁判答案
/// </summary> ///// </summary>
/// <param name="inDto"></param> ///// <param name="inDto"></param>
/// <returns></returns> ///// <returns></returns>
public async Task<IResponseOutput> VerifyTrialQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto) //public async Task<IResponseOutput> VerifyTrialQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto)
{ //{
var result = await _readingQuestionTrialRepository.AnyAsync(x => x.Id == inDto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None); // var result = await _readingQuestionTrialRepository.AnyAsync(x => x.Id == inDto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None);
return ResponseOutput.Ok(result); // return ResponseOutput.Ok(result);
} //}
/// <summary> /// <summary>
/// 设置系统问题标准是否完成配置 /// 设置系统问题标准是否完成配置
@ -377,6 +381,17 @@ namespace IRaCIS.Application.Services
[HttpPost] [HttpPost]
public async Task<IResponseOutput> AddOrUpdateReadingQuestionSystem(AddOrUpdateReadingQuestionSystemInDto indto) public async Task<IResponseOutput> AddOrUpdateReadingQuestionSystem(AddOrUpdateReadingQuestionSystemInDto indto)
{ {
if (indto.Id != null)
{
var trialIdList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionSystemId == indto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None)
.Select(x => x.TrialId).ToListAsync();
if (trialIdList.Count>0)
{
var trialNames = await _trialRepository.Where(x => trialIdList.Contains(x.Id)).Select(x => x.ExperimentName).ToListAsync();
throw new BusinessValidationFailedException("当前问题在项目"+ string.Join(',', trialNames) + "设置了裁判标准了,修改失败");
}
}
var entity = await _readingQuestionSystemRepository.InsertOrUpdateAsync(indto, true); var entity = await _readingQuestionSystemRepository.InsertOrUpdateAsync(indto, true);
return ResponseOutput.Ok(entity.Id.ToString()); return ResponseOutput.Ok(entity.Id.ToString());
} }
@ -676,6 +691,13 @@ namespace IRaCIS.Application.Services
[HttpPost] [HttpPost]
public async Task<IResponseOutput> AddOrUpdateReadingQuestionTrial(AddOrUpdateReadingQuestionTrialInDto indto) public async Task<IResponseOutput> AddOrUpdateReadingQuestionTrial(AddOrUpdateReadingQuestionTrialInDto indto)
{ {
if (indto.Id != null)
{
if (await _readingQuestionTrialRepository.AnyAsync(x => x.Id == indto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None))
{
throw new BusinessValidationFailedException("当前问题已经设置了裁判标准了,修改失败");
}
}
var entity = await _readingQuestionTrialRepository.InsertOrUpdateAsync(indto, true); var entity = await _readingQuestionTrialRepository.InsertOrUpdateAsync(indto, true);
return ResponseOutput.Ok(entity.Id.ToString()); return ResponseOutput.Ok(entity.Id.ToString());
} }