From fca6be727c4d2e8b5a5ff7148a70e468bd3c0365 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 21 Apr 2022 14:57:23 +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 --- .../Controllers/InspectionController.cs | 2 +- .../Controllers/StudyController.cs | 8 +- .../ImageAndDoc/DicomArchiveService.cs | 95 ++++++++++++++++++- .../Service/QC/QCOperationService.cs | 51 +++++++++- .../Service/Visit/VisitPlanService.cs | 3 +- .../Repository/Repository.cs | 1 + 6 files changed, 145 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs index e90993b63..65397046c 100644 --- a/IRaCIS.Core.API/Controllers/InspectionController.cs +++ b/IRaCIS.Core.API/Controllers/InspectionController.cs @@ -369,7 +369,7 @@ namespace IRaCIS.Core.API.Controllers var fun = await _qCOperationService.UploadVisitCheckExcel(file, opt.trialId); - return ResponseOutput.Ok(); + return fun; //var data = JsonConvert.DeserializeObject(opt.AuditInfo); //return await _inspectionService.Enforcement(opt.trialId, data, null, null, fun); } diff --git a/IRaCIS.Core.API/Controllers/StudyController.cs b/IRaCIS.Core.API/Controllers/StudyController.cs index 4e58977b9..4d179fe2b 100644 --- a/IRaCIS.Core.API/Controllers/StudyController.cs +++ b/IRaCIS.Core.API/Controllers/StudyController.cs @@ -69,7 +69,9 @@ namespace IRaCIS.Api.Controllers public async Task ArchiveStudy([FromForm] ArchiveStudyCommand archiveStudyCommand) { - + DataInspectionAddDTO data = JsonConvert.DeserializeObject(archiveStudyCommand.AuditInfo); + + data.CreateTime = DateTime.Now; //Stopwatch sw = new Stopwatch(); var startTime = DateTime.Now; //sw.Start(); @@ -213,10 +215,8 @@ namespace IRaCIS.Api.Controllers return ResponseOutput.NotOk("未完成该检查的归档", archiveResult); } - DataInspectionAddDTO data = JsonConvert.DeserializeObject(archiveStudyCommand.AuditInfo); - data.GeneralId = archivedStudyIds[0]; - data.CreateTime = DateTime.Now; + data.GeneralId = archivedStudyIds[0]; await _inspectionService.AddInspectionRecordAsync(data); diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs index 967b3d589..38a0f47fa 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs @@ -7,6 +7,8 @@ using IRaCIS.Core.Domain.Share; using Microsoft.Extensions.Hosting; using System.Text; using IRaCIS.Core.Application.Contracts; +using Newtonsoft.Json; +using MassTransit; namespace IRaCIS.Core.Application.Services { @@ -15,7 +17,7 @@ namespace IRaCIS.Core.Application.Services private readonly IRepository _studyRepository; private readonly IRepository _seriesRepository; private readonly IRepository _instanceRepository; - + private readonly IRepository _inspectionService; private readonly IEasyCachingProvider _provider; private readonly DicomFileStoreHelper _dicomFileStoreHelper; @@ -26,6 +28,7 @@ namespace IRaCIS.Core.Application.Services IRepository seriesRepository, IRepository instanceRepository, IHostEnvironment hostEnvironment, + IRepository inspectionService, DicomFileStoreHelper dicomFileStoreHelper, IEasyCachingProvider provider) { @@ -36,7 +39,7 @@ namespace IRaCIS.Core.Application.Services _seriesRepository = seriesRepository; _instanceRepository = instanceRepository; - + this._inspectionService = inspectionService; _provider = provider; } @@ -165,9 +168,91 @@ namespace IRaCIS.Core.Application.Services DicomSeries dicomSeries = CreateDicomSeries(dataset, dicomStudy, out bool isSeriesNeedAdd); DicomInstance dicomInstance = CreateDicomInstance(dataset, dicomStudy, dicomSeries); - if (isStudyNeedAdd) await _studyRepository.AddAsync(dicomStudy); - if (isSeriesNeedAdd) await _seriesRepository.AddAsync(dicomSeries); - await _instanceRepository.AddAsync(dicomInstance); + + List datas = new List(); + + + var createtime=DateTime.Now; + + if (isStudyNeedAdd) + { + //dicomStudy.Id = NewId.NextGuid(); + + //datas.Add(new DataInspection() + //{ + + // SiteId = dicomStudy.SiteId, + // SubjectId = dicomStudy.SubjectId, + // TrialId = dicomStudy.TrialId, + // SubjectVisitId = dicomStudy.SubjectVisitId, + // CreateTime = createtime, + // GeneralId= dicomStudy.Id, + // Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image", + // JsonDetail = JsonConvert.SerializeObject(new + // { + // SubmitState = "待提交", + // }) + //}); + + // 添加检查 + await _studyRepository.AddAsync(dicomStudy); + } + + if (isSeriesNeedAdd) { + // 添加序列 + + dicomSeries.Id = NewId.NextGuid(); + datas.Add(new DataInspection() + { + + SiteId = dicomStudy.SiteId, + SubjectId = dicomStudy.SubjectId, + TrialId = dicomStudy.TrialId, + GeneralId= dicomSeries.Id, + SubjectVisitId = dicomStudy.SubjectVisitId, + CreateTime = createtime.AddMilliseconds(10), + Identification = "Add|DICOM Series|Info|Visit-Image Upload", + JsonDetail = JsonConvert.SerializeObject(new + { + StudyCode=dicomStudy.StudyCode, + Modalities = dicomStudy.Modalities, + SeriesNumber= dicomSeries.SeriesNumber, + InstanceCount=dicomSeries.InstanceCount, + SeriesTime= dicomSeries.SeriesTime, + + }) + }); + + + datas.Add(new DataInspection() + { + + SiteId = dicomStudy.SiteId, + SubjectId = dicomStudy.SubjectId, + TrialId = dicomStudy.TrialId, + GeneralId = dicomSeries.Id, + SubjectVisitId = dicomStudy.SubjectVisitId, + CreateTime = createtime.AddMilliseconds(510), + Identification = "Init|DICOM Series|Status|Visit-Image Upload", + JsonDetail = JsonConvert.SerializeObject(new + { + StudyCode = dicomStudy.StudyCode, + Modalities = dicomStudy.Modalities, + SeriesNumber = dicomSeries.SeriesNumber, + InstanceCount = dicomSeries.InstanceCount, + SeriesTime = dicomSeries.SeriesTime, + IsReading= dicomSeries.IsReading, + + }) + }); + + await _seriesRepository.AddAsync(dicomSeries); + + } + + + await _inspectionService.AddListInspectionRecordAsync(datas); + await _instanceRepository.AddAsync(dicomInstance); diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index a248e1133..dcf98bef4 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1036,6 +1036,7 @@ namespace IRaCIS.Core.Application.Image.QA TrialId = x.TrialId, SubjectVisitId=x.SubjectVisitId, GeneralId=x.Id, + CreateTime=DateTime.Now, Identification= "Delete|DICOM Study|Data|Visit-Image Upload", JsonDetail = JsonConvert.SerializeObject(new { @@ -1051,10 +1052,10 @@ namespace IRaCIS.Core.Application.Image.QA }); - - - + + + #region will calls error wried //ids.ToList().ForEach(async id => @@ -1064,11 +1065,53 @@ namespace IRaCIS.Core.Application.Image.QA // var success3 = await _repository.DeleteFromQueryAsync(t => t.StudyId == id); //}); #endregion - + var createtime = DateTime.Now.AddMilliseconds(200); foreach (var id in ids) { var success1 = await _repository.BatchDeleteAsync(t => t.Id == id); var succeess2 = await _repository.BatchDeleteAsync(t => t.StudyId == id); + + var DicomSeriess = await _repository.GetQueryable().Where(t => t.StudyId == id).Select(x => new { + x.StudyId, + x.SubjectId, + x.SiteId, + x.TrialId, + x.Id, + x.SubjectVisitId, + x.SeriesTime, + x.IsReading, + x.InstanceCount, + x.SeriesNumber, + StudyCode= x.DicomStudy.StudyCode, + Modalities=x.DicomStudy.Modalities, + + }).ToListAsync(); + + DicomSeriess.ForEach(x => + { + datas.Add(new DataInspection() + { + + SiteId = x.SiteId, + SubjectId = x.SubjectId, + TrialId = x.TrialId, + GeneralId = x.Id, + SubjectVisitId = x.SubjectVisitId, + CreateTime = createtime, + Identification = "Delete|DICOM Series|Data|Visit-Image Upload", + JsonDetail = JsonConvert.SerializeObject(new + { + StudyCode = x.StudyCode, + Modalities = x.Modalities, + SeriesNumber = x.SeriesNumber, + InstanceCount = x.InstanceCount, + SeriesTime = x.SeriesTime, + IsReading = x.IsReading, + + }) + }); + }); + var success3 = await _repository.BatchDeleteAsync(t => t.StudyId == id); var success4 = await _repository.BatchDeleteAsync(t => t.StudyId == id); diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs index 5b55fcf00..e67390bae 100644 --- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs @@ -479,12 +479,13 @@ namespace IRaCIS.Application.Services CreateTime = createtime, SubjectVisitName = x.VisitName, TrialId = x.TrialId, + Reason="确认访视修改状态", JsonDetail = JsonConvert.SerializeObject(new { - IsBaseLine = changedItem.IsBaseLine, VisitName = changedItem.VisitName, VisitNum = changedItem.VisitNum, VisitDay = changedItem.VisitDay, + SubmitState = "未提交", VisitWindowLeft = changedItem.VisitWindowLeft, VisitWindowRight = changedItem.VisitWindowRight }), diff --git a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs index c54f93cf3..7da8c3d1a 100644 --- a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs +++ b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs @@ -149,6 +149,7 @@ namespace IRaCIS.Core.Infra.EFCore /// public async Task AddListInspectionRecordAsync(List datas) { + //var trialIds= datas.Select(x=>x.TrialId).Distinct().ToList(); //var subjectVisitIds= datas.Select(x=>x.SubjectVisitId).Distinct().ToList(); //var subjectIds = datas.Select(x => x.SubjectId).Distinct().ToList();