增加验证接口
parent
0e59617691
commit
f1601e7017
|
@ -229,6 +229,30 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
}
|
||||
|
||||
public class TaskStudyAchivePreConfirmCommand
|
||||
{
|
||||
public List<string> StudyInstanceUidList { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid SubjectId { get; set; }
|
||||
[NotDefault]
|
||||
public string SubjectCode { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class TaskStudyArchiveConfirmResult
|
||||
{
|
||||
public string StudyInstanceUid { get; set; }
|
||||
|
||||
public bool IsAllowUpload { get; set; }
|
||||
|
||||
public bool IsAllowReUpload { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class TaskArchiveStudyCommand
|
||||
{
|
||||
[NotDefault]
|
||||
|
|
|
@ -241,11 +241,49 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在调用预归档前验证 这些检查是否可以全新上传还是已存在补充 目前前端允许 IsAllowUpload==true 全新、IsAllowReUpload==true 补充的study ,全部丢到后端,后端判断存在,就删除之前的检查,全新插入
|
||||
/// </summary>
|
||||
/// <param name="inCommand"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<TaskStudyArchiveConfirmResult>> VerifyIRStudyAllowUpload(TaskStudyAchivePreConfirmCommand inCommand)
|
||||
{
|
||||
|
||||
//public async Task<List<VerifyStudyUploadResult>> VerifyIRStudyAllowUpload(VerifyUploadOrReupload inCommand)
|
||||
//{
|
||||
|
||||
//}
|
||||
var notAllowedUidList = _taskStudyRepository.Where(t => t.TrialId == inCommand.TrialId && inCommand.StudyInstanceUidList.Contains(t.StudyInstanceUid)).Select(t => new
|
||||
{
|
||||
t.StudyInstanceUid,
|
||||
t.SubjectId,
|
||||
SubejectCode = t.VisitTask.IsAnalysisCreate ? t.VisitTask.BlindSubjectCode : t.Subject.Code
|
||||
}).ToList();
|
||||
|
||||
var result = new List<TaskStudyArchiveConfirmResult>();
|
||||
|
||||
foreach (var studyUid in inCommand.StudyInstanceUidList)
|
||||
{
|
||||
var findStudy = notAllowedUidList.Where(t => t.StudyInstanceUid == studyUid).FirstOrDefault();
|
||||
if (findStudy != null)
|
||||
{
|
||||
//同一个subject 同一份影响
|
||||
if (findStudy.SubejectCode == inCommand.SubjectCode && findStudy.SubjectId == inCommand.SubjectId)
|
||||
{
|
||||
result.Add(new TaskStudyArchiveConfirmResult() { StudyInstanceUid = studyUid, IsAllowReUpload = true });
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Add(new TaskStudyArchiveConfirmResult() { StudyInstanceUid = studyUid, IsAllowReUpload = false, IsAllowUpload = false });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//说明没上传 不用管
|
||||
result.Add(new TaskStudyArchiveConfirmResult() { StudyInstanceUid = studyUid, IsAllowUpload = true });
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
|
@ -276,6 +314,28 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
|
||||
#endregion
|
||||
|
||||
//总数为0的检查不允许提交
|
||||
if (incommand.Study.SeriesList.SelectMany(t => t.InstanceList).Count() == 0)
|
||||
{
|
||||
return ResponseOutput.NotOk("Study_InstanceCountZero");
|
||||
}
|
||||
|
||||
var @uploadLock = _distributedLockProvider.CreateLock($"UploadTaskDicom");
|
||||
|
||||
using (await @uploadLock.AcquireAsync())
|
||||
{
|
||||
if (_fusionCache.GetOrDefault<Guid>(CacheKeys.TrialStudyUidDBLock(incommand.TrialId, incommand.Study.StudyInstanceUid)) != Guid.Empty)
|
||||
{
|
||||
//---当前已有人正在上传和归档该检查!
|
||||
return ResponseOutput.NotOk(StaticData.International("UploadDownLoad_ArchiveInProgress"));
|
||||
}
|
||||
else
|
||||
{
|
||||
//在事务未完成前 防止前端重复提交
|
||||
await _fusionCache.SetAsync(CacheKeys.TrialStudyUidDBLock(incommand.TrialId, incommand.Study.StudyInstanceUid), _userInfo.Id, TimeSpan.FromMinutes(3));
|
||||
}
|
||||
}
|
||||
|
||||
var visiTaskId = incommand.VisitTaskId;
|
||||
|
||||
var modalitys = string.Empty;
|
||||
|
@ -295,6 +355,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
//上传
|
||||
if (studyMonitor.IsDicomReUpload == false)
|
||||
{
|
||||
//目前不考虑重传的问题,后面的直接覆盖前面的,全部删除
|
||||
|
||||
|
||||
|
||||
var study = _mapper.Map<TaskStudy>(incommand.Study);
|
||||
|
||||
var @lock = _distributedLockProvider.CreateLock($"StudyCode");
|
||||
|
@ -756,12 +820,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
{
|
||||
var query = _taskStudyRepository.Where(t => t.VisitTaskId == inQuery.VisitTaskId).Select(t => new
|
||||
{
|
||||
StudyId=t.Id,
|
||||
StudyId = t.Id,
|
||||
t.Modalities,
|
||||
t.InstanceCount,
|
||||
t.SeriesCount,
|
||||
t.StudyCode,
|
||||
SeriesList= t.SeriesList.OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime).Select(u=>new
|
||||
SeriesList = t.SeriesList.OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime).Select(u => new
|
||||
{
|
||||
u.SeriesTime,
|
||||
u.InstanceCount,
|
||||
|
@ -772,25 +836,25 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
u.SeriesNumber,
|
||||
u.SliceThickness,
|
||||
u.StudyInstanceUid,
|
||||
|
||||
IsExistMutiFrames= u.InstanceList.Any(t=>t.NumberOfFrames>1),
|
||||
|
||||
InstanceInfoList =u.InstanceList.OrderBy(t => t.InstanceNumber).Select(k =>
|
||||
new InstanceBasicInfo()
|
||||
{
|
||||
Id = k.Id,
|
||||
NumberOfFrames = k.NumberOfFrames,
|
||||
HtmlPath = k.HtmlPath,
|
||||
Path = k.Path,
|
||||
InstanceNumber = k.InstanceNumber,
|
||||
IsExistMutiFrames = u.InstanceList.Any(t => t.NumberOfFrames > 1),
|
||||
|
||||
}).ToList()
|
||||
InstanceInfoList = u.InstanceList.OrderBy(t => t.InstanceNumber).Select(k =>
|
||||
new InstanceBasicInfo()
|
||||
{
|
||||
Id = k.Id,
|
||||
NumberOfFrames = k.NumberOfFrames,
|
||||
HtmlPath = k.HtmlPath,
|
||||
Path = k.Path,
|
||||
InstanceNumber = k.InstanceNumber,
|
||||
|
||||
}).ToList()
|
||||
})
|
||||
});
|
||||
var list = await query.ToListAsync();
|
||||
|
||||
return ResponseOutput.Ok(list);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue