From a9afb9a478d3e26cb742673e77f5fdb86886d3e0 Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Wed, 29 Jun 2022 11:02:05 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Reading/Dto/ReadingClinicalDataDto.cs | 12 ++++
.../Reading/ReadingClinicalDataService.cs | 38 +++++-------
.../Service/Reading/ReadingQuestionService.cs | 62 +++++++++++++------
3 files changed, 70 insertions(+), 42 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
index b1391b727..86c96b488 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
@@ -166,6 +166,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid ReadingId { get; set; }
public UploadRole? UploadRole { get; set; }
+
+ public Guid TrialId { get; set; }
+
+ ///
+ /// 是否是访视
+ ///
+ public bool IsVisit { get; set; }
+
+ ///
+ /// 是否是基线
+ ///
+ public bool IsBaseLine { get; set; }
}
public class GetReadingClinicalDataPDFListIndto:PageInput
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
index 1431c2ae4..f44cd9c28 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
@@ -138,14 +138,14 @@ namespace IRaCIS.Application.Services
Path=x.ClinicalDataTrialSet.Path,
}).ToListAsync() ;
- PageOutput clinicalData = await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto()
+ PageOutput clinicalData = (await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto()
{
PageIndex = 1,
PageSize = 9999,
SubjectId = inDto.SubjectId,
ReadingId = inDto.SubjectVisitId,
-
- });
+ TrialId=inDto.TrialId,
+ })).Item1;
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
@@ -285,26 +285,23 @@ namespace IRaCIS.Application.Services
///
///
[HttpPost]
- public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto)
+ public async Task<(PageOutput,object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto)
{
- //var userPMTypes = new List() {
- // (int)UserTypeEnum.ProjectManager,
- // (int)UserTypeEnum.SPM,
- // (int)UserTypeEnum.CPM,
- // (int)UserTypeEnum.IndependentReviewer,
- // };
+ GetTrialClinicalDataSelectIndto getTrialClinicalDataSelectIndto = new GetTrialClinicalDataSelectIndto()
+ {
+ ReadingId = inDto.ReadingId,
+ TrialId = inDto.TrialId,
+ IsBaseLine = inDto.IsBaseLine,
+ SubjectId = inDto.SubjectId,
+ IsVisit = inDto.IsVisit,
+ };
- //if (userPMTypes.Contains(_userInfo.UserTypeEnumInt))
- //{
- // inDto.UploadRole = UploadRole.PM;
- //}
+ var clinicalDataList = await this.GetTrialClinicalDataSelect(getTrialClinicalDataSelectIndto);
- //else
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
{
inDto.UploadRole = UploadRole.CRC;
}
-
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.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,
inDto.Asc);
-
-
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
-
-
-
foreach (var item in result.CurrentPageData)
{
item.ClinicalTableData = new ClinicalDataTable()
@@ -350,7 +342,9 @@ namespace IRaCIS.Application.Services
}
- return result;
+ return (result, new {
+ isCanAddClinicalData= clinicalDataList.Count()>0,
+ }) ;
}
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs
index 82c810d20..bece44e0e 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs
@@ -12,6 +12,7 @@ using IRaCIS.Core.Application.Service.Reading;
using IRaCIS.Core.Infra.EFCore.Common;
using Panda.DynamicWebApi.Attributes;
using IRaCIS.Core.Application.Contracts;
+using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Application.Services
{
@@ -30,6 +31,7 @@ namespace IRaCIS.Application.Services
private readonly IRepository _clinicalDataTrialSetRepository;
private readonly IRepository _clinicalDataSystemSetRepository;
private readonly IRepository _dictionaryRepository;
+ private readonly IRepository _trialRepository;
private readonly IReadingImageTaskService _readingImageTaskService;
private readonly IRepository _readingTaskQuestionAnswer;
private readonly IRepository _previousPDFRepository;
@@ -43,6 +45,7 @@ namespace IRaCIS.Application.Services
IRepository ClinicalDataTrialSetRepository,
IRepository ClinicalDataSystemSetRepository,
IRepository dictionaryRepository,
+ IRepository trialRepository,
IReadingImageTaskService readingImageTaskService,
IRepository readingTaskQuestionAnswer,
IRepository previousPDFRepository
@@ -56,6 +59,7 @@ namespace IRaCIS.Application.Services
this._clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
this._clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository;
this._dictionaryRepository = dictionaryRepository;
+ this._trialRepository = trialRepository;
this._readingImageTaskService = readingImageTaskService;
this._readingTaskQuestionAnswer = readingTaskQuestionAnswer;
this._previousPDFRepository = previousPDFRepository;
@@ -131,28 +135,28 @@ namespace IRaCIS.Application.Services
// return ResponseOutput.Ok(result);
//}
- ///
- /// 验证系统问题是否设置裁判答案
- ///
- ///
- ///
- public async Task VerifySystemQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto)
- {
- var result = await _readingQuestionTrialRepository.AnyAsync(x => x.ReadingQuestionSystemId == inDto.Id&&x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None);
- return ResponseOutput.Ok(result);
- }
+ /////
+ ///// 验证系统问题是否设置裁判答案
+ /////
+ /////
+ /////
+ //public async Task VerifySystemQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto)
+ //{
+ // var result = await _readingQuestionTrialRepository.AnyAsync(x => x.ReadingQuestionSystemId == inDto.Id&&x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None);
+ // return ResponseOutput.Ok(result);
+ //}
- ///
- /// 验证项目问题是否设置裁判答案
- ///
- ///
- ///
- public async Task VerifyTrialQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto)
- {
- var result = await _readingQuestionTrialRepository.AnyAsync(x => x.Id == inDto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None);
- return ResponseOutput.Ok(result);
- }
+ /////
+ ///// 验证项目问题是否设置裁判答案
+ /////
+ /////
+ /////
+ //public async Task VerifyTrialQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto)
+ //{
+ // var result = await _readingQuestionTrialRepository.AnyAsync(x => x.Id == inDto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None);
+ // return ResponseOutput.Ok(result);
+ //}
///
/// 设置系统问题标准是否完成配置
@@ -377,6 +381,17 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task 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);
return ResponseOutput.Ok(entity.Id.ToString());
}
@@ -676,6 +691,13 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task 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);
return ResponseOutput.Ok(entity.Id.ToString());
}