修改代码

Uat_Study
he 2022-04-22 14:42:14 +08:00
parent c9b50196fe
commit dff3ce99b8
6 changed files with 73 additions and 36 deletions

View File

@ -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);
} }

View File

@ -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);

View File

@ -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; }

View File

@ -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

View File

@ -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();

View File

@ -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();
} }