Uat_Study
parent
1ddcbb3013
commit
3ac4979552
|
@ -90,6 +90,13 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.ConfirmReadingMedicineQuestion(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.ViewModel.ConfirmReadingMedicineQuestionInDto})">
|
||||
<summary>
|
||||
确认项目医学审核问题
|
||||
</summary>
|
||||
<param name="opt"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.SubmitVisitTaskQuestions(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.SubmitVisitTaskQuestionsInDto})">
|
||||
<summary>
|
||||
提交阅片问题
|
||||
|
|
|
@ -1439,6 +1439,21 @@
|
|||
答案
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TaskInfo.TaskName">
|
||||
<summary>
|
||||
任务名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TaskInfo.TaskBlindName">
|
||||
<summary>
|
||||
盲态名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TaskInfo.EvaluationResult">
|
||||
<summary>
|
||||
评估结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingPeriodSetAddOrEdit.TrialId">
|
||||
<summary>
|
||||
项目ID
|
||||
|
@ -2134,6 +2149,18 @@
|
|||
是否是系统数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.ReadingMedicalReviewService">
|
||||
<summary>
|
||||
阅片医学审核
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingMedicalReviewService.GetMedicalReviewReadingTask(IRaCIS.Core.Application.Service.Reading.Dto.GetMedicalReviewReadingTaskInDto)">
|
||||
<summary>
|
||||
获取
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.ReadingMedicineQuestionService">
|
||||
<summary>
|
||||
医学审核问题
|
||||
|
@ -4868,13 +4895,6 @@
|
|||
<param name="visitTaskId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.TriggerJudgeQuestionOld(System.Guid)">
|
||||
<summary>
|
||||
触发裁判任务(老)
|
||||
</summary>
|
||||
<param name="visitTaskId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.SaveJudgeTask(IRaCIS.Core.Application.Service.Reading.Dto.SaveJudgeTaskDto)">
|
||||
<summary>
|
||||
添加裁判任务
|
||||
|
|
|
@ -290,6 +290,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class GetReadingClinicalDataListOutDto
|
||||
{
|
||||
|
|
|
@ -17,4 +17,41 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
public Guid TaskMedicalReviewId { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class GetMedicalReviewReadingTaskOutDto
|
||||
{
|
||||
//阅片类型
|
||||
public ReadingMethod ReadingType { get; set; }
|
||||
|
||||
|
||||
public bool IsReadingTaskViewInOrder { get; set; }
|
||||
|
||||
public List<TaskInfo> TaskList { get; set; } = new List<TaskInfo>();
|
||||
|
||||
public List<TaskInfo> OtherDoctorTaskList { get; set; } = new List<TaskInfo>();
|
||||
}
|
||||
|
||||
public class TaskInfo
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务名称
|
||||
/// </summary>
|
||||
|
||||
public string TaskName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 盲态名称
|
||||
/// </summary>
|
||||
public string TaskBlindName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评估结果
|
||||
/// </summary>
|
||||
public string EvaluationResult { get; set; }
|
||||
|
||||
public ReadingCategory ReadingCategory { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -175,7 +175,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
|
||||
public string ParentQuestionName { get; set; }
|
||||
|
||||
public int ParentQuestionShowOrder { get; set; }
|
||||
public int? ParentQuestionShowOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否是裁判问题
|
||||
|
@ -237,7 +237,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
|
||||
public string ParentQuestionName { get; set; }
|
||||
|
||||
public int ParentQuestionShowOrder { get; set; }
|
||||
public int? ParentQuestionShowOrder { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -16,5 +16,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
Task<IResponseOutput> AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto);
|
||||
|
||||
Task<IResponseOutput> ReadClinicalDataSign(ReadingClinicalDataSignIndto inDto);
|
||||
|
||||
Task<List<GetReadingClinicalDataListOutDto>> GetClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto);
|
||||
}
|
||||
}
|
|
@ -45,7 +45,7 @@ namespace IRaCIS.Application.Services
|
|||
IRepository<PreviousSurgery> previousSurgeryRepository,
|
||||
IRepository<Subject> subjectRepository,
|
||||
IRepository<ReadModule> readModuleRepository,
|
||||
IRepository<ReadingClinicalDataPDF> readingClinicalDataPDFRepository,
|
||||
IRepository<ReadingClinicalDataPDF> readingClinicalDataPDFRepository,
|
||||
IRepository<VisitTask> visitTaskRepository)
|
||||
{
|
||||
this._readingClinicalDataRepository = readingClinicalDataRepository;
|
||||
|
@ -71,12 +71,12 @@ namespace IRaCIS.Application.Services
|
|||
public async Task<IResponseOutput> AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto)
|
||||
{
|
||||
var existsQuery = _readingClinicalDataRepository
|
||||
.WhereIf(indto.Id != null,x=>x.Id!=indto.Id)
|
||||
.Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId&&x.ReadingId==indto.ReadingId);
|
||||
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
|
||||
.Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId && x.ReadingId == indto.ReadingId);
|
||||
|
||||
if (await existsQuery.AnyAsync())
|
||||
{
|
||||
return ResponseOutput.NotOk("存在同类型的临床数据");
|
||||
return ResponseOutput.NotOk("存在同类型的临床数据");
|
||||
}
|
||||
var clinicalDataTrialSet = (await _clinicalDataTrialSetRepository.Where(x => x.Id == indto.ClinicalDataTrialSetId).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
if (indto.Id == null)
|
||||
|
@ -85,13 +85,13 @@ namespace IRaCIS.Application.Services
|
|||
entity.ReadingClinicalDataPDFList = indto.AddFileList.Select(x => new ReadingClinicalDataPDF()
|
||||
{
|
||||
TrialId = entity.TrialId,
|
||||
SubjectId= indto.SubjectId,
|
||||
FileName=x.FileName,
|
||||
Path=x.Path,
|
||||
ClinicalDataTrialSetId=indto.ClinicalDataTrialSetId,
|
||||
IsVisit= indto.IsVisit,
|
||||
ClinicalDataLevel= clinicalDataTrialSet.ClinicalDataLevel,
|
||||
ReadingId=indto.ReadingId
|
||||
SubjectId = indto.SubjectId,
|
||||
FileName = x.FileName,
|
||||
Path = x.Path,
|
||||
ClinicalDataTrialSetId = indto.ClinicalDataTrialSetId,
|
||||
IsVisit = indto.IsVisit,
|
||||
ClinicalDataLevel = clinicalDataTrialSet.ClinicalDataLevel,
|
||||
ReadingId = indto.ReadingId
|
||||
}).ToList();
|
||||
await _readingClinicalDataRepository.AddAsync(entity, true);
|
||||
var success = await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
|
@ -113,14 +113,14 @@ namespace IRaCIS.Application.Services
|
|||
IsVisit = indto.IsVisit,
|
||||
ClinicalDataLevel = clinicalDataTrialSet.ClinicalDataLevel,
|
||||
ReadingId = indto.ReadingId,
|
||||
ReadingClinicalDataId= entity.Id,
|
||||
ReadingClinicalDataId = entity.Id,
|
||||
}).ToList();
|
||||
await _readingClinicalDataPDFRepository.AddRangeAsync(addFileList);
|
||||
var success = await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok(entity.Id);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -133,24 +133,24 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
await this.AddCRCClinicalData(inDto);
|
||||
|
||||
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x =>x.ReadingId==inDto.SubjectVisitId)
|
||||
.Where(x=> x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Read && x.ClinicalDataTrialSet.IsConfirm)
|
||||
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
|
||||
.Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Read && x.ClinicalDataTrialSet.IsConfirm)
|
||||
.Select(x => new GetCRCClinicalDataOutDto()
|
||||
{
|
||||
Id=x.Id,
|
||||
Id = x.Id,
|
||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||
ClinicalUploadType=x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id,
|
||||
FileName=x.ClinicalDataTrialSet.FileName,
|
||||
UploadRole=x.ClinicalDataTrialSet.UploadRole,
|
||||
Path=x.ClinicalDataTrialSet.Path,
|
||||
}).ToListAsync() ;
|
||||
FileName = x.ClinicalDataTrialSet.FileName,
|
||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||
Path = x.ClinicalDataTrialSet.Path,
|
||||
}).ToListAsync();
|
||||
|
||||
List<GetReadingClinicalDataListOutDto> clinicalData = (await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto()
|
||||
{
|
||||
SubjectId = inDto.SubjectId,
|
||||
ReadingId = inDto.SubjectVisitId,
|
||||
TrialId=inDto.TrialId,
|
||||
TrialId = inDto.TrialId,
|
||||
})).Item1;
|
||||
|
||||
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
@ -159,7 +159,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
foreach (var item in cRCClinicalDataList)
|
||||
{
|
||||
item.PDFFileList = clinicalData.Where(y => y.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).SelectMany(x=>x.FileList).ToList();
|
||||
item.PDFFileList = clinicalData.Where(y => y.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).SelectMany(x => x.FileList).ToList();
|
||||
item.ClinicalTableData = new ClinicalDataTable()
|
||||
{
|
||||
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
||||
|
@ -175,7 +175,7 @@ namespace IRaCIS.Application.Services
|
|||
/// 添加CRC数据类型
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task AddCRCClinicalData(GetCRCClinicalDataInDto inDto)
|
||||
private async Task AddCRCClinicalData(GetCRCClinicalDataInDto inDto)
|
||||
{
|
||||
var cRCClinicalDataIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId && x.UploadRole == UploadRole.CRC && x.ClinicalDataLevel != ClinicalLevel.Read && x.IsConfirm).Select(x => x.Id).ToListAsync();
|
||||
|
||||
|
@ -217,7 +217,7 @@ namespace IRaCIS.Application.Services
|
|||
[HttpDelete("{id:guid}")]
|
||||
public async Task<IResponseOutput> DeleteReadingClinicalData(Guid id)
|
||||
{
|
||||
|
||||
|
||||
await _readingClinicalDataRepository.DeleteFromQueryAsync(x => x.Id == id, true);
|
||||
return ResponseOutput.Result(true);
|
||||
}
|
||||
|
@ -238,31 +238,31 @@ namespace IRaCIS.Application.Services
|
|||
(int)UserTypeEnum.IndependentReviewer,
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
if (userTypes.Contains(_userInfo.UserTypeEnumInt))
|
||||
{
|
||||
inDto.UploadRole = UploadRole.PM;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var usedIdsQuery = _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.ReadingId && x.Id != inDto.ReadingClinicalDataId).Select(x => x.ClinicalDataTrialSetId);
|
||||
List<GetTrialClinicalDataSelectOutDto> clinicalList = await _clinicalDataTrialSetRepository.Where(x=>x.TrialId==inDto.TrialId&&x.IsConfirm)
|
||||
.WhereIf(inDto.UploadRole!=null,x=>x.UploadRole==inDto.UploadRole)
|
||||
.Where(x=> !usedIdsQuery.Contains(x.Id))
|
||||
.WhereIf(inDto.IsVisit&&inDto.IsBaseLine,x=>x.ClinicalDataLevel == ClinicalLevel.Subject||x.ClinicalDataLevel== ClinicalLevel.SubjectVisit)
|
||||
.WhereIf(inDto.IsVisit&&! inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||
List<GetTrialClinicalDataSelectOutDto> clinicalList = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm)
|
||||
.WhereIf(inDto.UploadRole != null, x => x.UploadRole == inDto.UploadRole)
|
||||
.Where(x => !usedIdsQuery.Contains(x.Id))
|
||||
.WhereIf(inDto.IsVisit && inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||
.WhereIf(inDto.IsVisit && !inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||
.WhereIf(!inDto.IsVisit, x => x.ClinicalDataLevel == ClinicalLevel.Read)
|
||||
.Select(x => new GetTrialClinicalDataSelectOutDto()
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||
ClinicalDataSetName = x.ClinicalDataSetName,
|
||||
ClinicalUploadType = x.ClinicalUploadType,
|
||||
FileName=x.FileName,
|
||||
Path=x.Path,
|
||||
Id = x.Id
|
||||
}).ToListAsync() ;
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||
ClinicalDataSetName = x.ClinicalDataSetName,
|
||||
ClinicalUploadType = x.ClinicalUploadType,
|
||||
FileName = x.FileName,
|
||||
Path = x.Path,
|
||||
Id = x.Id
|
||||
}).ToListAsync();
|
||||
return clinicalList;
|
||||
}
|
||||
|
||||
|
@ -279,7 +279,7 @@ namespace IRaCIS.Application.Services
|
|||
IsSign = true
|
||||
});
|
||||
|
||||
var result =await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
var result = await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Result(result);
|
||||
}
|
||||
|
@ -290,7 +290,7 @@ namespace IRaCIS.Application.Services
|
|||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<(List<GetReadingClinicalDataListOutDto>,object)> GetReadingOrTaskClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto)
|
||||
public async Task<(List<GetReadingClinicalDataListOutDto>, object)> GetReadingOrTaskClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto)
|
||||
{
|
||||
var readingNameOrTaskBlindName = string.Empty;
|
||||
if (inDto.ReadingId == null)
|
||||
|
@ -310,33 +310,7 @@ namespace IRaCIS.Application.Services
|
|||
}
|
||||
}
|
||||
|
||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||
.WhereIf(inDto.ReadingClinicalDataId!=null,x=>x.Id== inDto.ReadingClinicalDataId)
|
||||
.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.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
||||
|
||||
var result = await GetClinicalDataList(inDto);
|
||||
|
||||
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();
|
||||
|
@ -359,6 +333,45 @@ namespace IRaCIS.Application.Services
|
|||
});
|
||||
}
|
||||
|
||||
[NonDynamicMethod]
|
||||
public async Task<List<GetReadingClinicalDataListOutDto>> GetClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto)
|
||||
{
|
||||
|
||||
if (inDto.ReadingId == null)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
||||
inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId;
|
||||
}
|
||||
|
||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||
.WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId)
|
||||
.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.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取阅片临床数据列表
|
||||
/// </summary>
|
||||
|
|
|
@ -31,6 +31,7 @@ namespace IRaCIS.Application.Services
|
|||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
||||
private readonly IReadingClinicalDataService _readingClinicalDataService;
|
||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
private readonly IRepository<Subject> _subjectRepository;
|
||||
private readonly IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository;
|
||||
|
@ -46,6 +47,7 @@ namespace IRaCIS.Application.Services
|
|||
IRepository<VisitTask> visitTaskRepository,
|
||||
IRepository<Trial> TrialRepository,
|
||||
IVisitTaskHelpeService visitTaskHelpeService,
|
||||
IReadingClinicalDataService readingClinicalDataService,
|
||||
IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<Subject> subjectRepository,
|
||||
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
|
||||
|
@ -60,6 +62,7 @@ namespace IRaCIS.Application.Services
|
|||
this._visitTaskRepository = visitTaskRepository;
|
||||
this._trialRepository = TrialRepository;
|
||||
this._visitTaskHelpeService = visitTaskHelpeService;
|
||||
this._readingClinicalDataService = readingClinicalDataService;
|
||||
this._subjectVisitRepository = subjectVisitRepository;
|
||||
this._subjectRepository = subjectRepository;
|
||||
this._readingJudgeInfoRepository = readingJudgeInfoRepository;
|
||||
|
@ -148,6 +151,11 @@ namespace IRaCIS.Application.Services
|
|||
throw new BusinessValidationFailedException("任务都已经完成");
|
||||
}
|
||||
}
|
||||
|
||||
if (task.SubjectCode.IsNullOrEmpty())
|
||||
{
|
||||
task.SubjectCode = await _subjectRepository.Where(x => x.Id == task.SubjectId).Select(x => x.Code).FirstOrDefaultAsync();
|
||||
}
|
||||
return task;
|
||||
|
||||
|
||||
|
@ -183,7 +191,27 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
x.IsReadingShowPreviousResults,
|
||||
x.IsReadingShowSubjectInfo,
|
||||
x.ClinicalInformationTransmissionEnum,
|
||||
}).FirstOrDefaultAsync();
|
||||
|
||||
#region 临床数据
|
||||
|
||||
#endregion
|
||||
bool isExistsClinicalData = false;
|
||||
if (trialInfo.ClinicalInformationTransmissionEnum == 1)
|
||||
{
|
||||
isExistsClinicalData = (await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto()
|
||||
{
|
||||
|
||||
SubjectId = task.SubjectId,
|
||||
TrialId = inDto.TrialId,
|
||||
VisitTaskId = task.VisitTaskId,
|
||||
})).Count() > 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return (result, new {
|
||||
VisitTaskId= task.VisitTaskId,
|
||||
SubjectId=task.SubjectId,
|
||||
|
@ -192,6 +220,7 @@ namespace IRaCIS.Application.Services
|
|||
TaskBlindName=task.TaskBlindName,
|
||||
IsReadingShowPreviousResults = trialInfo.IsReadingShowPreviousResults,
|
||||
IsReadingShowSubjectInfo=trialInfo.IsReadingShowSubjectInfo,
|
||||
IsExistsClinicalData= isExistsClinicalData,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -686,72 +715,6 @@ namespace IRaCIS.Application.Services
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 触发裁判任务(老)
|
||||
/// </summary>
|
||||
/// <param name="visitTaskId"></param>
|
||||
/// <returns></returns>
|
||||
private async Task TriggerJudgeQuestionOld(Guid visitTaskId)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
|
||||
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
|
||||
if (visitTaskids.Count == 2)
|
||||
{
|
||||
var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x=> visitTaskids.Contains(x.VisitTaskId))
|
||||
join question in _readingQuestionTrialRepository.Where(x=>x.IsJudgeQuestion) on new { ReadingQuestionTrialId= questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId= question.Id }
|
||||
select new TaskAnswerDto()
|
||||
{
|
||||
Answer= questionAnswet.Answer,
|
||||
AnswerGroup= question.AnswerGroup,
|
||||
QuestionId= question.Id,
|
||||
VisitTaskId= questionAnswet.VisitTaskId,
|
||||
};
|
||||
var questionAnswerlist =await query.ToListAsync();
|
||||
List<GroupTaskAnswerDto> groupTasks = questionAnswerlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup }).Select(x => new GroupTaskAnswerDto
|
||||
{
|
||||
QuestionId = x.Key.QuestionId,
|
||||
AnswerGroup = x.Key.AnswerGroup,
|
||||
TaskAnswerList = x.ToList(),
|
||||
}).ToList();
|
||||
var verificationResults = true;
|
||||
foreach (var item in groupTasks)
|
||||
{
|
||||
if (item.TaskAnswerList.Count() != 2|| item.AnswerGroup==string.Empty)
|
||||
{
|
||||
verificationResults = false;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
var item1= item.TaskAnswerList[0];
|
||||
var item2= item.TaskAnswerList[1];
|
||||
if (item1.Answer != item2.Answer)
|
||||
{
|
||||
var answerGroup = JsonConvert.DeserializeObject<List<string>>(item.AnswerGroup).Select(x => new AnswerGroup()
|
||||
{
|
||||
GroupId = NewId.NextGuid(),
|
||||
GroupValue = x
|
||||
}).ToList();
|
||||
var itemAnswerGroupsitem1 = answerGroup.Where(x => x.GroupValue.Contains($"|{item1.Answer}|"));
|
||||
var itemAnswerGroupsitem2 = answerGroup.Where(x => x.GroupValue.Contains($"|{item2.Answer}|"));
|
||||
var unionList = itemAnswerGroupsitem1.Intersect(itemAnswerGroupsitem2).ToList();
|
||||
if (unionList.Count < 1)
|
||||
{
|
||||
verificationResults = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!verificationResults)
|
||||
{
|
||||
await this.SaveJudgeTask(new SaveJudgeTaskDto() {
|
||||
VisitTaskIds= visitTaskids,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加裁判任务
|
||||
|
|
|
@ -7,6 +7,7 @@ using IRaCIS.Core.Infra.EFCore.Common;
|
|||
using MassTransit;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
|
@ -19,16 +20,19 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
private readonly IRepository<ReadingMedicineTrialQuestion> _readingMedicineTrialQuestionRepository;
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||
private readonly IRepository<ReadingMedicineSystemQuestion> _readingMedicineSystemQuestionRepository;
|
||||
|
||||
public ReadingMedicalReviewService(
|
||||
IRepository<ReadingMedicineTrialQuestion> readingMedicineTrialQuestionRepository,
|
||||
IRepository<Trial> trialRepository,
|
||||
IRepository<VisitTask> visitTaskRepository,
|
||||
IRepository<ReadingMedicineSystemQuestion> readingMedicineSystemQuestionRepository
|
||||
)
|
||||
{
|
||||
this._readingMedicineTrialQuestionRepository = readingMedicineTrialQuestionRepository;
|
||||
this._trialRepository = trialRepository;
|
||||
this._visitTaskRepository = visitTaskRepository;
|
||||
this._readingMedicineSystemQuestionRepository = readingMedicineSystemQuestionRepository;
|
||||
}
|
||||
|
||||
|
@ -37,10 +41,50 @@ namespace IRaCIS.Core.Application.Service
|
|||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task GetMedicalReviewReadingTask(GetMedicalReviewReadingTaskInDto inDto)
|
||||
public async Task<GetMedicalReviewReadingTaskOutDto> GetMedicalReviewReadingTask(GetMedicalReviewReadingTaskInDto inDto)
|
||||
{
|
||||
|
||||
}
|
||||
var medicalReviewInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new GetMedicalReviewReadingTaskOutDto()
|
||||
{
|
||||
ReadingType=x.ReadingType,
|
||||
IsReadingTaskViewInOrder=x.IsReadingTaskViewInOrder
|
||||
}).FirstOrDefaultAsync();
|
||||
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.TrialId).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
// 单审有序
|
||||
if (medicalReviewInfo.IsReadingTaskViewInOrder)
|
||||
{
|
||||
switch (medicalReviewInfo.ReadingType)
|
||||
{
|
||||
//case ReadingMethod.Single:
|
||||
// await GetOrderTaskInfo();
|
||||
// break;
|
||||
//case ReadingMethod.Double:
|
||||
// await GetOrderTaskInfo();
|
||||
// break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//// 有序任务列表
|
||||
//async Task GetOrderTaskInfo()
|
||||
//{
|
||||
// medicalReviewInfo.TaskList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId
|
||||
// && x.DoctorUserId == taskInfo.DoctorUserId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReReadingApplyState != ReReadingApplyState.Agree
|
||||
// ).OrderBy(x => x.VisitTaskNum).Select(x => new TaskInfo()
|
||||
// {
|
||||
// Id = x.Id,
|
||||
// ReadingCategory = x.ReadingCategory,
|
||||
// TaskBlindName = x.TaskBlindName,
|
||||
// TaskName = x.TaskName
|
||||
// }).ToListAsync();
|
||||
//}
|
||||
|
||||
|
||||
return medicalReviewInfo;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -89,8 +89,8 @@ namespace IRaCIS.Application.Services
|
|||
.WhereIf(!inDto.CriterionName.IsNullOrEmpty(), x => x.CriterionName.Contains(inDto.CriterionName))
|
||||
.ProjectTo<ReadingQuestionCriterionSystemView>(_mapper.ConfigurationProvider)
|
||||
.Where(x=>x.IsEnable);
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionCriterionSystemView.ShowOrder) : inDto.SortField,
|
||||
inDto.Asc);
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionCriterionSystemView.ShowOrder) : inDto.SortField,
|
||||
inDto.Asc);
|
||||
}
|
||||
|
||||
|
||||
|
@ -369,7 +369,7 @@ namespace IRaCIS.Application.Services
|
|||
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
||||
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
||||
.ProjectTo<ReadingQuestionSystemView>(_mapper.ConfigurationProvider);
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionSystemView.ShowOrder) : inDto.SortField,
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, "GroupName ASC,ShowOrder",
|
||||
inDto.Asc);
|
||||
}
|
||||
|
||||
|
@ -678,7 +678,7 @@ namespace IRaCIS.Application.Services
|
|||
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
||||
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
||||
.ProjectTo<ReadingQuestionTrialView>(_mapper.ConfigurationProvider);
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionTrialView.ShowOrder) : inDto.SortField,
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, "GroupName ASC,ShowOrder",
|
||||
inDto.Asc);
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
CreateMap<AddOrUpdateReadingQuestionSystemInDto, ReadingQuestionSystem>();
|
||||
CreateMap<ReadingQuestionSystem, ReadingQuestionSystemView>()
|
||||
.ForMember(d => d.ParentQuestionName, u => u.MapFrom(s => s.ParentReadingQuestionSystem==null?string.Empty: s.ParentReadingQuestionSystem.QuestionName))
|
||||
.ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionSystem == null ? 0 : s.ParentReadingQuestionSystem.ShowOrder));
|
||||
.ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionSystem.ShowOrder));
|
||||
|
||||
|
||||
CreateMap<AddOrUpdateReadingQuestionCriterionTrialInDto, ReadingQuestionCriterionTrial>();
|
||||
|
@ -71,7 +71,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
CreateMap<AddOrUpdateReadingQuestionTrialInDto, ReadingQuestionTrial>();
|
||||
CreateMap<ReadingQuestionTrial, ReadingQuestionTrialView>()
|
||||
.ForMember(d => d.ParentQuestionName, u => u.MapFrom(s => s.ParentReadingQuestionTrial == null ? string.Empty : s.ParentReadingQuestionTrial.QuestionName))
|
||||
.ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionTrial == null ? 0 : s.ParentReadingQuestionTrial.ShowOrder));
|
||||
.ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionTrial.ShowOrder));
|
||||
#endregion
|
||||
|
||||
#region IR阅片
|
||||
|
|
Loading…
Reference in New Issue