From 08354e00b0c2015a3280ed54237f5e996c007502 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 17 Nov 2022 16:35:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 43 +++++++++++ .../Service/Visit/SubjectVisitService.cs | 73 +++++++++++-------- 2 files changed, 85 insertions(+), 31 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index b897a0700..cefe7600d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1251,6 +1251,49 @@ + + + 删除病灶获取起始病灶序号 + + + + + + 获取阅片报告 + + + + + + + 将上一次的病灶信息添加到这一次 + + + + + + + 测试计算 + + + + + + + + 计算任务 + + + + + + + 自动计算 + + + + + 自动计算 并修改值 diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index d3e0467be..fd72bfbfe 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -72,9 +72,9 @@ namespace IRaCIS.Core.Application.Services var verifyExp3 = new EntityVerifyExp() { - VerifyExp = t => t.SubjectId == svCommand.SubjectId && t.VisitName==svCommand.VisitName, + VerifyExp = t => t.SubjectId == svCommand.SubjectId && t.VisitName == svCommand.VisitName, VerifyMsg = "该受试者的访视计划中已经包含一个具有相同访视名称的访视。" - + }; svCommand.BlindName = "B" + ((int)(svCommand.VisitNum * 10)).ToString("D3"); @@ -95,13 +95,13 @@ namespace IRaCIS.Core.Application.Services } } - dbBeforeEntity = await _subjectVisitRepository.InsertFromDTOAsync(svCommand, false, verifyExp1, verifyExp2,verifyExp3); + dbBeforeEntity = await _subjectVisitRepository.InsertFromDTOAsync(svCommand, false, verifyExp1, verifyExp2, verifyExp3); } else { dbBeforeEntity = await _subjectVisitRepository.UpdateFromDTOAsync(svCommand, false, false, verifyExp1, verifyExp2, verifyExp3); - + if (svCommand.PDState != dbBeforeEntity.PDState && dbBeforeEntity.SubmitState == SubmitStateEnum.Submitted) { @@ -151,7 +151,7 @@ namespace IRaCIS.Core.Application.Services [Authorize(Policy = IRaCISPolicy.PM_IQC)] public async Task SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent) { - await _subjectVisitRepository.UpdatePartialFromQueryAsync(subjectVisitId, u => new SubjectVisit() { IsUrgent = isUrgent },true); + await _subjectVisitRepository.UpdatePartialFromQueryAsync(subjectVisitId, u => new SubjectVisit() { IsUrgent = isUrgent }, true); return ResponseOutput.Ok(); } @@ -176,8 +176,8 @@ namespace IRaCIS.Core.Application.Services return ResponseOutput.NotOk("当前访视已经被设置为另一访视的上一访视,不允许删除。"); } - await _subjectVisitRepository.DeleteFromQueryAsync(s => s.Id == id,true); - + await _subjectVisitRepository.DeleteFromQueryAsync(s => s.Id == id, true); + return ResponseOutput.Ok(); } @@ -205,7 +205,7 @@ namespace IRaCIS.Core.Application.Services var studyIds = studyList.Select(t => t.StudyId).ToList(); var instanceList = await _repository.Where(t => studyIds.Contains(t.StudyId)) - .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber }).ToListAsync(); + .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber,t.Path }).ToListAsync(); foreach (var t in studyList) { @@ -215,7 +215,15 @@ namespace IRaCIS.Core.Application.Services .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - t.SeriesList.ForEach(series => series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList()); + t.SeriesList.ForEach(series => + { + series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList(); + + series.InstancePathList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Path).ToList(); + + } + + ); //设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计 t.SeriesCount = t.SeriesList.Count(); @@ -245,28 +253,28 @@ namespace IRaCIS.Core.Application.Services var taskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync(); - - if(taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned) + + if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned) { - + var thisStudyIds = thisRowinfo.Select(x => x.StudyId).ToList(); - var thisSeriesIdIds = thisRowinfo.Where(x=>x.SeriesId!=null).Select(x => x.SeriesId).ToList(); - if (thisRowinfo.Count>0) + var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).Select(x => x.SeriesId).ToList(); + if (thisRowinfo.Count > 0) { - var thisVisitTaskStudy= await _repository.Where(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO() + var thisVisitTaskStudy = await _repository.Where(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO() { InstanceCount = k.InstanceCount, - + SeriesCount = k.SeriesCount, - + StudyId = k.Id, - IsCriticalSequence=true, + IsCriticalSequence = true, }).FirstOrDefaultAsync(); if (thisVisitTaskStudy != null) { - var item = await _repository.Where(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber). + var item = await _repository.Where(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber). ThenBy(s => s.SeriesTime) .ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); @@ -287,10 +295,10 @@ namespace IRaCIS.Core.Application.Services result.Add(thisVisitTaskStudy); } - + } } - + var studyList = await _repository.Where(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId).Select(k => new VisitStudyDTO() { @@ -299,20 +307,23 @@ namespace IRaCIS.Core.Application.Services SeriesCount = k.SeriesCount, StudyCode = k.StudyCode, StudyId = k.Id, - + }).ToListAsync(); var studyIds = studyList.Select(t => t.StudyId).ToList(); var instanceList = await _repository.Where(t => studyIds.Contains(t.StudyId)) - .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber }).ToListAsync(); + .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber,t.Path }).ToListAsync(); foreach (var t in studyList) { - t.SeriesList = await _repository.Where(s => s.StudyId == t.StudyId&&s.IsReading).OrderBy(s => s.SeriesNumber). + t.SeriesList = await _repository.Where(s => s.StudyId == t.StudyId && s.IsReading).OrderBy(s => s.SeriesNumber). ThenBy(s => s.SeriesTime) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - t.SeriesList.ForEach(series => series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList()); + t.SeriesList.ForEach(series => { + series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList(); + series.InstancePathList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Path).ToList(); + }); //设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计 t.SeriesCount = t.SeriesList.Count(); @@ -329,11 +340,11 @@ namespace IRaCIS.Core.Application.Services { InstanceCount = x.FileCount, StudyId = x.Id, - Modalities=x.Modality, - SeriesCount=1, - StudyCode=x.StudyCode, + Modalities = x.Modality, + SeriesCount = 1, + StudyCode = x.StudyCode, IsDicom = false, - + }).ToList(); foreach (var item in noDicomStudyList) @@ -359,9 +370,9 @@ namespace IRaCIS.Core.Application.Services } - if (studyList==null||studyList.Count == 0) + if (studyList == null || studyList.Count == 0) { - studyList=new List(); + studyList = new List(); } studyList.AddRange(noDicomStudyList);