Uat_Study
he 2022-07-01 15:30:46 +08:00
parent 1ddcbb3013
commit 3ac4979552
11 changed files with 243 additions and 155 deletions

View File

@ -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>
提交阅片问题

View File

@ -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>
添加裁判任务

View File

@ -291,6 +291,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class GetReadingClinicalDataListOutDto
{

View File

@ -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; }
}
}

View File

@ -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>

View File

@ -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);
}
}

View File

@ -310,6 +310,39 @@ namespace IRaCIS.Application.Services
}
}
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();
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,
});
}
[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))
@ -336,27 +369,7 @@ namespace IRaCIS.Application.Services
var result = await resultQuery.ToListAsync();
result = result.Where(x => !(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,
});
return result;
}
/// <summary>

View File

@ -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>
/// 添加裁判任务

View File

@ -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,8 +41,48 @@ 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;
}

View File

@ -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);
}

View File

@ -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阅片