修改path

Uat_Study
hang 2022-11-17 16:35:51 +08:00
parent 38ef0557a6
commit 08354e00b0
2 changed files with 85 additions and 31 deletions

View File

@ -1251,6 +1251,49 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.GetDeleteLesionStatrIndex(IRaCIS.Core.Application.Service.Reading.Dto.DeleteReadingRowAnswerInDto)">
<summary>
删除病灶获取起始病灶序号
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.GetReadingReportEvaluation(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingReportEvaluationInDto)">
<summary>
获取阅片报告
</summary>
<param name="indto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.AddTaskLesionAnswerFromLastTask(IRaCIS.Core.Application.ViewModel.AddTaskLesionAnswerFromLastTaskInDto)">
<summary>
将上一次的病灶信息添加到这一次
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.TestCalculate(System.Guid,IRaCIS.Core.Domain.Share.QuestionType)">
<summary>
测试计算
</summary>
<param name="visitTaskId"></param>
<param name="type"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.CalculateTask(IRaCIS.Core.Application.Service.Reading.Dto.CalculateTaskInDto)">
<summary>
计算任务
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.ReadingCalculate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto,System.Collections.Generic.List{IRaCIS.Core.Domain.Share.QuestionType})">
<summary>
自动计算
</summary>
<param name="inDto"></param>
<param name="calculateType"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ICriterionCalculateService.CalculateTask(IRaCIS.Core.Application.Service.Reading.Dto.CalculateTaskInDto)"> <member name="M:IRaCIS.Core.Application.Service.ICriterionCalculateService.CalculateTask(IRaCIS.Core.Application.Service.Reading.Dto.CalculateTaskInDto)">
<summary> <summary>
自动计算 并修改值 自动计算 并修改值

View File

@ -72,9 +72,9 @@ namespace IRaCIS.Core.Application.Services
var verifyExp3 = new EntityVerifyExp<SubjectVisit>() var verifyExp3 = new EntityVerifyExp<SubjectVisit>()
{ {
VerifyExp = t => t.SubjectId == svCommand.SubjectId && t.VisitName==svCommand.VisitName, VerifyExp = t => t.SubjectId == svCommand.SubjectId && t.VisitName == svCommand.VisitName,
VerifyMsg = "该受试者的访视计划中已经包含一个具有相同访视名称的访视。" VerifyMsg = "该受试者的访视计划中已经包含一个具有相同访视名称的访视。"
}; };
svCommand.BlindName = "B" + ((int)(svCommand.VisitNum * 10)).ToString("D3"); 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 else
{ {
dbBeforeEntity = await _subjectVisitRepository.UpdateFromDTOAsync(svCommand, false, false, verifyExp1, verifyExp2, verifyExp3); dbBeforeEntity = await _subjectVisitRepository.UpdateFromDTOAsync(svCommand, false, false, verifyExp1, verifyExp2, verifyExp3);
if (svCommand.PDState != dbBeforeEntity.PDState && dbBeforeEntity.SubmitState == SubmitStateEnum.Submitted) if (svCommand.PDState != dbBeforeEntity.PDState && dbBeforeEntity.SubmitState == SubmitStateEnum.Submitted)
{ {
@ -151,7 +151,7 @@ namespace IRaCIS.Core.Application.Services
[Authorize(Policy = IRaCISPolicy.PM_IQC)] [Authorize(Policy = IRaCISPolicy.PM_IQC)]
public async Task<IResponseOutput> SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent) public async Task<IResponseOutput> 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(); return ResponseOutput.Ok();
} }
@ -176,8 +176,8 @@ namespace IRaCIS.Core.Application.Services
return ResponseOutput.NotOk("当前访视已经被设置为另一访视的上一访视,不允许删除。"); return ResponseOutput.NotOk("当前访视已经被设置为另一访视的上一访视,不允许删除。");
} }
await _subjectVisitRepository.DeleteFromQueryAsync(s => s.Id == id,true); await _subjectVisitRepository.DeleteFromQueryAsync(s => s.Id == id, true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
@ -205,7 +205,7 @@ namespace IRaCIS.Core.Application.Services
var studyIds = studyList.Select(t => t.StudyId).ToList(); var studyIds = studyList.Select(t => t.StudyId).ToList();
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId)) var instanceList = await _repository.Where<DicomInstance>(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) foreach (var t in studyList)
{ {
@ -215,7 +215,15 @@ namespace IRaCIS.Core.Application.Services
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<DicomSeriesDTO>(_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 所以这里要实时统计 //设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计
t.SeriesCount = t.SeriesList.Count(); 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(); 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 thisStudyIds = thisRowinfo.Select(x => x.StudyId).ToList();
var thisSeriesIdIds = thisRowinfo.Where(x=>x.SeriesId!=null).Select(x => x.SeriesId).ToList(); var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).Select(x => x.SeriesId).ToList();
if (thisRowinfo.Count>0) if (thisRowinfo.Count > 0)
{ {
var thisVisitTaskStudy= await _repository.Where<DicomStudy>(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO() var thisVisitTaskStudy = await _repository.Where<DicomStudy>(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO()
{ {
InstanceCount = k.InstanceCount, InstanceCount = k.InstanceCount,
SeriesCount = k.SeriesCount, SeriesCount = k.SeriesCount,
StudyId = k.Id, StudyId = k.Id,
IsCriticalSequence=true, IsCriticalSequence = true,
}).FirstOrDefaultAsync(); }).FirstOrDefaultAsync();
if (thisVisitTaskStudy != null) if (thisVisitTaskStudy != null)
{ {
var item = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber). var item = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).
ThenBy(s => s.SeriesTime) ThenBy(s => s.SeriesTime)
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); .ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
@ -287,10 +295,10 @@ namespace IRaCIS.Core.Application.Services
result.Add(thisVisitTaskStudy); result.Add(thisVisitTaskStudy);
} }
} }
} }
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId).Select(k => new VisitStudyDTO() var studyList = await _repository.Where<DicomStudy>(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, SeriesCount = k.SeriesCount,
StudyCode = k.StudyCode, StudyCode = k.StudyCode,
StudyId = k.Id, StudyId = k.Id,
}).ToListAsync(); }).ToListAsync();
var studyIds = studyList.Select(t => t.StudyId).ToList(); var studyIds = studyList.Select(t => t.StudyId).ToList();
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId)) var instanceList = await _repository.Where<DicomInstance>(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) foreach (var t in studyList)
{ {
t.SeriesList = await _repository.Where<DicomSeries>(s => s.StudyId == t.StudyId&&s.IsReading).OrderBy(s => s.SeriesNumber). t.SeriesList = await _repository.Where<DicomSeries>(s => s.StudyId == t.StudyId && s.IsReading).OrderBy(s => s.SeriesNumber).
ThenBy(s => s.SeriesTime) ThenBy(s => s.SeriesTime)
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<DicomSeriesDTO>(_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 所以这里要实时统计 //设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计
t.SeriesCount = t.SeriesList.Count(); t.SeriesCount = t.SeriesList.Count();
@ -329,11 +340,11 @@ namespace IRaCIS.Core.Application.Services
{ {
InstanceCount = x.FileCount, InstanceCount = x.FileCount,
StudyId = x.Id, StudyId = x.Id,
Modalities=x.Modality, Modalities = x.Modality,
SeriesCount=1, SeriesCount = 1,
StudyCode=x.StudyCode, StudyCode = x.StudyCode,
IsDicom = false, IsDicom = false,
}).ToList(); }).ToList();
foreach (var item in noDicomStudyList) 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<VisitStudyDTO>(); studyList = new List<VisitStudyDTO>();
} }
studyList.AddRange(noDicomStudyList); studyList.AddRange(noDicomStudyList);