diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs
index cf7d24c5d..631746d42 100644
--- a/IRaCIS.Core.API/Controllers/InspectionController.cs
+++ b/IRaCIS.Core.API/Controllers/InspectionController.cs
@@ -345,7 +345,7 @@ namespace IRaCIS.Core.API.Controllers
}
///
- ///
+ /// 影像转发
///
///
///
@@ -354,6 +354,7 @@ namespace IRaCIS.Core.API.Controllers
public async Task ForwardSVDicomImage(DataInspectionDto opt)
{
var fun = _qCOperationService.ForwardSVDicomImage;
+ opt.AuditInfo.NeedSava = false;
return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
}
diff --git a/IRaCIS.Core.API/Controllers/StudyController.cs b/IRaCIS.Core.API/Controllers/StudyController.cs
index 4d179fe2b..90f799171 100644
--- a/IRaCIS.Core.API/Controllers/StudyController.cs
+++ b/IRaCIS.Core.API/Controllers/StudyController.cs
@@ -70,7 +70,7 @@ namespace IRaCIS.Api.Controllers
{
DataInspectionAddDTO data = JsonConvert.DeserializeObject(archiveStudyCommand.AuditInfo);
-
+ string studycode = string.Empty;
data.CreateTime = DateTime.Now;
//Stopwatch sw = new Stopwatch();
var startTime = DateTime.Now;
@@ -138,9 +138,9 @@ namespace IRaCIS.Api.Controllers
memoryStream.Seek(0, SeekOrigin.Begin);
var archiveStudyId = await _dicomArchiveService.ArchiveDicomStreamAsync(memoryStream, savedInfo, seriesInstanceUidList, instanceUidList);
-
- if (!archivedStudyIds.Contains(archiveStudyId))
- archivedStudyIds.Add(archiveStudyId);
+ studycode = archiveStudyId.Item2;
+ if (!archivedStudyIds.Contains(archiveStudyId.Item1))
+ archivedStudyIds.Add(archiveStudyId.Item1);
}
}
catch
@@ -163,8 +163,11 @@ namespace IRaCIS.Api.Controllers
memoryStream.Seek(0, SeekOrigin.Begin);
var archiveStudyId = await _dicomArchiveService.ArchiveDicomStreamAsync(memoryStream, savedInfo, seriesInstanceUidList, instanceUidList);
- if (!archivedStudyIds.Contains(archiveStudyId))
- archivedStudyIds.Add(archiveStudyId);
+ studycode = archiveStudyId.Item2;
+
+
+ if (!archivedStudyIds.Contains(archiveStudyId.Item1))
+ archivedStudyIds.Add(archiveStudyId.Item1);
}
}
}
@@ -217,6 +220,9 @@ namespace IRaCIS.Api.Controllers
data.GeneralId = archivedStudyIds[0];
+ Dictionary keyValuePairs = new Dictionary();
+ keyValuePairs.Add("StyudCode", studycode);
+ data.JsonDetail = _inspectionService.AddJsonItem(data.JsonDetail, keyValuePairs);
await _inspectionService.AddInspectionRecordAsync(data);
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs
index 5b6c6ba4c..a3bb260aa 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs
@@ -1,4 +1,6 @@
-namespace IRaCIS.Core.Application.Contracts
+using IRaCIS.Core.Domain.Share;
+
+namespace IRaCIS.Core.Application.Contracts
{
public class DicomInstanceDTO
{
@@ -39,6 +41,7 @@
public string ResearchProgramNo { get; set; } = string.Empty;
public string TrialIndication { get; set; } = string.Empty;
+ public CheckStateEnum CheckState { get; set; }
public decimal VisitNum { get; set; }
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs
index 88a4e73c6..c6419829b 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs
@@ -50,7 +50,7 @@ namespace IRaCIS.Core.Application.Services
return success;
}
- public async Task ArchiveDicomStreamAsync(Stream dicomStream,
+ public async Task> ArchiveDicomStreamAsync(Stream dicomStream,
DicomTrialSiteSubjectInfo addtionalInfo, List seriesInstanceUidList, List instanceUidList)
{
@@ -65,7 +65,7 @@ namespace IRaCIS.Core.Application.Services
if (instanceUidList.Any(t => t == sopInstanceUid))
{
- return IdentifierHelper.CreateGuid(studyInstanceUid, addtionalInfo.TrialId.ToString());
+ return new Tuple(IdentifierHelper.CreateGuid(studyInstanceUid, addtionalInfo.TrialId.ToString()), string.Empty) ;
}
@@ -203,6 +203,26 @@ namespace IRaCIS.Core.Application.Services
await _seriesRepository.AddAsync(dicomSeries);
#region 稽查
List datas = new List();
+ //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()
{
@@ -212,26 +232,6 @@ namespace IRaCIS.Core.Application.Services
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
{
@@ -241,6 +241,7 @@ namespace IRaCIS.Core.Application.Services
InstanceCount = dicomSeries.InstanceCount,
SeriesTime = dicomSeries.SeriesTime,
IsReading = dicomSeries.IsReading,
+ IsDeleted = dicomSeries.IsReading,
})
});
@@ -275,7 +276,7 @@ namespace IRaCIS.Core.Application.Services
if (dataset.InternalTransferSyntax.IsEncapsulated) await dicomFile.SaveAsync(filePath);
else await dicomFile.Clone(DicomTransferSyntax.RLELossless).SaveAsync(filePath); //RLELossless
}
- return dicomInstance.StudyId;
+ return new Tuple(dicomInstance.StudyId, dicomStudy.StudyCode);
}
@@ -464,6 +465,8 @@ namespace IRaCIS.Core.Application.Services
SiteId = dicomStudy.SiteId,
TrialId = dicomStudy.TrialId,
SubjectId = dicomStudy.SubjectId,
+ IsDeleted=false,
+ IsReading=false,
SubjectVisitId = dicomStudy.SubjectVisitId,
InstanceCount = 0
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IDicomArchiveService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IDicomArchiveService.cs
index 372561d8a..62531e71b 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IDicomArchiveService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IDicomArchiveService.cs
@@ -2,7 +2,7 @@
{
public interface IDicomArchiveService
{
- Task ArchiveDicomStreamAsync(Stream dicomStream, DicomTrialSiteSubjectInfo addtionalInfo, List seriesInstanceUidList, List instanceUidList);
+ Task> ArchiveDicomStreamAsync(Stream dicomStream, DicomTrialSiteSubjectInfo addtionalInfo, List seriesInstanceUidList, List instanceUidList);
//ICollection GetArchivedStudyList(List archivedStudyIds);
Task DicomDBDataSaveChange();
diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
index 06c6ee749..8d614d46e 100644
--- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
@@ -2022,12 +2022,28 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpPost("{trialId:guid}")]
public async Task ForwardSVDicomImage(Guid[] subjectVisitIdList)
{
-
+ List datas = new List();
foreach (var subjectVisitId in subjectVisitIdList)
{
- var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
+
+ var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
+ Dictionary keyValuePairs = new Dictionary() {
+ {"SubmitState","已提交" },
+ { "AuditState","通过"},
+ { "CheckState",info.CheckState== CheckStateEnum.CVIng? "核查中": "核查通过"},
+ { "ForwardState",""}
+
+ };
+ DataInspection data = new DataInspection()
+ {
+ TrialId= info.TrialId,
+ SiteId=info.SiteId,
+ SubjectId=info.SubjectId,
+ SubjectVisitId= subjectVisitId,
+ Identification= "NaN-14-0"
+ };
var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName;
var path = _dicomFileStoreHelper.GetSubjectVisitPath(info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId);
@@ -2091,13 +2107,21 @@ namespace IRaCIS.Core.Application.Image.QA
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
+ keyValuePairs["ForwardState"] = "转发失败";
}
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded,ForwardUserId = _userInfo.Id,ForwardTime = DateTime.Now});
- }
-
+ keyValuePairs["ForwardState"] = "转发成功";
+
+ data.JsonDetail = JsonConvert.SerializeObject(keyValuePairs);
+ datas.Add(data);
+ }
+ await _subjectVisitRepository.AddListInspectionRecordAsync(datas);
+
+ await _subjectVisitRepository.SaveChangesAsync();
+
return ResponseOutput.Ok();
}