修改代码
parent
c9b50196fe
commit
dff3ce99b8
|
@ -345,7 +345,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
/// 影像转发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="opt"></param>
|
/// <param name="opt"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -354,6 +354,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
public async Task<IResponseOutput> ForwardSVDicomImage(DataInspectionDto<ForwardSVDicomImageDto> opt)
|
public async Task<IResponseOutput> ForwardSVDicomImage(DataInspectionDto<ForwardSVDicomImageDto> opt)
|
||||||
{
|
{
|
||||||
var fun = _qCOperationService.ForwardSVDicomImage;
|
var fun = _qCOperationService.ForwardSVDicomImage;
|
||||||
|
opt.AuditInfo.NeedSava = false;
|
||||||
return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
|
return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace IRaCIS.Api.Controllers
|
||||||
{
|
{
|
||||||
|
|
||||||
DataInspectionAddDTO data = JsonConvert.DeserializeObject<DataInspectionAddDTO>(archiveStudyCommand.AuditInfo);
|
DataInspectionAddDTO data = JsonConvert.DeserializeObject<DataInspectionAddDTO>(archiveStudyCommand.AuditInfo);
|
||||||
|
string studycode = string.Empty;
|
||||||
data.CreateTime = DateTime.Now;
|
data.CreateTime = DateTime.Now;
|
||||||
//Stopwatch sw = new Stopwatch();
|
//Stopwatch sw = new Stopwatch();
|
||||||
var startTime = DateTime.Now;
|
var startTime = DateTime.Now;
|
||||||
|
@ -138,9 +138,9 @@ namespace IRaCIS.Api.Controllers
|
||||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
var archiveStudyId = await _dicomArchiveService.ArchiveDicomStreamAsync(memoryStream, savedInfo, seriesInstanceUidList, instanceUidList);
|
var archiveStudyId = await _dicomArchiveService.ArchiveDicomStreamAsync(memoryStream, savedInfo, seriesInstanceUidList, instanceUidList);
|
||||||
|
studycode = archiveStudyId.Item2;
|
||||||
if (!archivedStudyIds.Contains(archiveStudyId))
|
if (!archivedStudyIds.Contains(archiveStudyId.Item1))
|
||||||
archivedStudyIds.Add(archiveStudyId);
|
archivedStudyIds.Add(archiveStudyId.Item1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
@ -163,8 +163,11 @@ namespace IRaCIS.Api.Controllers
|
||||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
var archiveStudyId = await _dicomArchiveService.ArchiveDicomStreamAsync(memoryStream, savedInfo, seriesInstanceUidList, instanceUidList);
|
var archiveStudyId = await _dicomArchiveService.ArchiveDicomStreamAsync(memoryStream, savedInfo, seriesInstanceUidList, instanceUidList);
|
||||||
if (!archivedStudyIds.Contains(archiveStudyId))
|
studycode = archiveStudyId.Item2;
|
||||||
archivedStudyIds.Add(archiveStudyId);
|
|
||||||
|
|
||||||
|
if (!archivedStudyIds.Contains(archiveStudyId.Item1))
|
||||||
|
archivedStudyIds.Add(archiveStudyId.Item1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -217,6 +220,9 @@ namespace IRaCIS.Api.Controllers
|
||||||
|
|
||||||
|
|
||||||
data.GeneralId = archivedStudyIds[0];
|
data.GeneralId = archivedStudyIds[0];
|
||||||
|
Dictionary<string,object> keyValuePairs = new Dictionary<string,object>();
|
||||||
|
keyValuePairs.Add("StyudCode", studycode);
|
||||||
|
data.JsonDetail = _inspectionService.AddJsonItem(data.JsonDetail, keyValuePairs);
|
||||||
await _inspectionService.AddInspectionRecordAsync(data);
|
await _inspectionService.AddInspectionRecordAsync(data);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
namespace IRaCIS.Core.Application.Contracts
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Contracts
|
||||||
{
|
{
|
||||||
public class DicomInstanceDTO
|
public class DicomInstanceDTO
|
||||||
{
|
{
|
||||||
|
@ -39,6 +41,7 @@
|
||||||
public string ResearchProgramNo { get; set; } = string.Empty;
|
public string ResearchProgramNo { get; set; } = string.Empty;
|
||||||
public string TrialIndication { get; set; } = string.Empty;
|
public string TrialIndication { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public CheckStateEnum CheckState { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public decimal VisitNum { get; set; }
|
public decimal VisitNum { get; set; }
|
||||||
|
|
|
@ -50,7 +50,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Guid> ArchiveDicomStreamAsync(Stream dicomStream,
|
public async Task<Tuple<Guid, string>> ArchiveDicomStreamAsync(Stream dicomStream,
|
||||||
DicomTrialSiteSubjectInfo addtionalInfo, List<string> seriesInstanceUidList, List<string> instanceUidList)
|
DicomTrialSiteSubjectInfo addtionalInfo, List<string> seriesInstanceUidList, List<string> instanceUidList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
if (instanceUidList.Any(t => t == sopInstanceUid))
|
if (instanceUidList.Any(t => t == sopInstanceUid))
|
||||||
{
|
{
|
||||||
return IdentifierHelper.CreateGuid(studyInstanceUid, addtionalInfo.TrialId.ToString());
|
return new Tuple<Guid, string>(IdentifierHelper.CreateGuid(studyInstanceUid, addtionalInfo.TrialId.ToString()), string.Empty) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -203,6 +203,26 @@ namespace IRaCIS.Core.Application.Services
|
||||||
await _seriesRepository.AddAsync(dicomSeries);
|
await _seriesRepository.AddAsync(dicomSeries);
|
||||||
#region 稽查
|
#region 稽查
|
||||||
List<DataInspection> datas = new List<DataInspection>();
|
List<DataInspection> datas = new List<DataInspection>();
|
||||||
|
//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()
|
datas.Add(new DataInspection()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -212,26 +232,6 @@ namespace IRaCIS.Core.Application.Services
|
||||||
GeneralId = dicomSeries.Id,
|
GeneralId = dicomSeries.Id,
|
||||||
SubjectVisitId = dicomStudy.SubjectVisitId,
|
SubjectVisitId = dicomStudy.SubjectVisitId,
|
||||||
CreateTime = createtime.AddMilliseconds(10),
|
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",
|
Identification = "Init|DICOM Series|Status|Visit-Image Upload",
|
||||||
JsonDetail = JsonConvert.SerializeObject(new
|
JsonDetail = JsonConvert.SerializeObject(new
|
||||||
{
|
{
|
||||||
|
@ -241,6 +241,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
InstanceCount = dicomSeries.InstanceCount,
|
InstanceCount = dicomSeries.InstanceCount,
|
||||||
SeriesTime = dicomSeries.SeriesTime,
|
SeriesTime = dicomSeries.SeriesTime,
|
||||||
IsReading = dicomSeries.IsReading,
|
IsReading = dicomSeries.IsReading,
|
||||||
|
IsDeleted = dicomSeries.IsReading,
|
||||||
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
@ -275,7 +276,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
if (dataset.InternalTransferSyntax.IsEncapsulated) await dicomFile.SaveAsync(filePath);
|
if (dataset.InternalTransferSyntax.IsEncapsulated) await dicomFile.SaveAsync(filePath);
|
||||||
else await dicomFile.Clone(DicomTransferSyntax.RLELossless).SaveAsync(filePath); //RLELossless
|
else await dicomFile.Clone(DicomTransferSyntax.RLELossless).SaveAsync(filePath); //RLELossless
|
||||||
}
|
}
|
||||||
return dicomInstance.StudyId;
|
return new Tuple<Guid, string>(dicomInstance.StudyId, dicomStudy.StudyCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -464,6 +465,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
SiteId = dicomStudy.SiteId,
|
SiteId = dicomStudy.SiteId,
|
||||||
TrialId = dicomStudy.TrialId,
|
TrialId = dicomStudy.TrialId,
|
||||||
SubjectId = dicomStudy.SubjectId,
|
SubjectId = dicomStudy.SubjectId,
|
||||||
|
IsDeleted=false,
|
||||||
|
IsReading=false,
|
||||||
SubjectVisitId = dicomStudy.SubjectVisitId,
|
SubjectVisitId = dicomStudy.SubjectVisitId,
|
||||||
|
|
||||||
InstanceCount = 0
|
InstanceCount = 0
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
public interface IDicomArchiveService
|
public interface IDicomArchiveService
|
||||||
{
|
{
|
||||||
Task<Guid> ArchiveDicomStreamAsync(Stream dicomStream, DicomTrialSiteSubjectInfo addtionalInfo, List<string> seriesInstanceUidList, List<string> instanceUidList);
|
Task<Tuple<Guid,string>> ArchiveDicomStreamAsync(Stream dicomStream, DicomTrialSiteSubjectInfo addtionalInfo, List<string> seriesInstanceUidList, List<string> instanceUidList);
|
||||||
//ICollection<DicomStudyDTO> GetArchivedStudyList(List<Guid> archivedStudyIds);
|
//ICollection<DicomStudyDTO> GetArchivedStudyList(List<Guid> archivedStudyIds);
|
||||||
|
|
||||||
Task<bool> DicomDBDataSaveChange();
|
Task<bool> DicomDBDataSaveChange();
|
||||||
|
|
|
@ -2022,12 +2022,28 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
[HttpPost("{trialId:guid}")]
|
[HttpPost("{trialId:guid}")]
|
||||||
public async Task<IResponseOutput> ForwardSVDicomImage(Guid[] subjectVisitIdList)
|
public async Task<IResponseOutput> ForwardSVDicomImage(Guid[] subjectVisitIdList)
|
||||||
{
|
{
|
||||||
|
List<DataInspection> datas = new List<DataInspection>();
|
||||||
|
|
||||||
foreach (var subjectVisitId in subjectVisitIdList)
|
foreach (var subjectVisitId in subjectVisitIdList)
|
||||||
{
|
{
|
||||||
var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo<DicomTrialSiteSubjectInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
||||||
|
|
||||||
|
var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo<DicomTrialSiteSubjectInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
||||||
|
Dictionary<string, object> keyValuePairs = new Dictionary<string, object>() {
|
||||||
|
{"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 targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName;
|
||||||
|
|
||||||
var path = _dicomFileStoreHelper.GetSubjectVisitPath(info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId);
|
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,
|
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
|
||||||
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
|
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
|
||||||
|
keyValuePairs["ForwardState"] = "转发失败";
|
||||||
}
|
}
|
||||||
|
|
||||||
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
|
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
|
||||||
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded,ForwardUserId = _userInfo.Id,ForwardTime = DateTime.Now});
|
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();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue