增加影像退回接口
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
e4cf4cc8b8
commit
380546ca3c
|
|
@ -1227,4 +1227,15 @@ namespace IRaCIS.Application.Contracts
|
|||
public string Path { get; set; }
|
||||
public long? FileSize { get; set; }
|
||||
}
|
||||
|
||||
public class VisitImageBackCommand
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid SubjectId { get; set; }
|
||||
[NotDefault]
|
||||
public Guid SubjectVisitId { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,83 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
) : BaseService
|
||||
{
|
||||
#region 访视提交生成任务了,但是需要退回
|
||||
|
||||
/// <summary>
|
||||
/// 阅片任务退回,删除影像数据,解除访视和检查绑定关系
|
||||
/// </summary>
|
||||
/// <param name="inCommand"></param>
|
||||
/// <param name="_dicomStudyRepository"></param>
|
||||
/// <param name="_dicomSeriesRepository"></param>
|
||||
/// <param name="_dicomInstanceRepository"></param>
|
||||
/// <param name="_repository"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public async Task<IResponseOutput> VisitImageBack(VisitImageBackCommand inCommand,
|
||||
[FromServices] IRepository<DicomStudy> _dicomStudyRepository,
|
||||
[FromServices] IRepository<DicomSeries> _dicomSeriesRepository,
|
||||
[FromServices] IRepository<DicomInstance> _dicomInstanceRepository,
|
||||
[FromServices] IRepository _repository)
|
||||
{
|
||||
var minVisitNum = _subjectVisitRepository.Where(t => t.Id == inCommand.SubjectVisitId).Select(t => t.VisitNum).FirstOrDefault();
|
||||
|
||||
|
||||
|
||||
//修改提交状态
|
||||
|
||||
await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.SubjectId == inCommand.SubjectId && t.VisitNum >= minVisitNum, t => new SubjectVisit()
|
||||
{
|
||||
SubmitState = SubmitStateEnum.ToSubmit,
|
||||
SubmitTime = null,
|
||||
SubmitUserId = null,
|
||||
AuditState = AuditStateEnum.None,
|
||||
CheckState = CheckStateEnum.None,
|
||||
|
||||
});
|
||||
|
||||
|
||||
//清理影像检查
|
||||
|
||||
await _dicomStudyRepository.BatchDeleteNoTrackingAsync(t => t.SubjectId == inCommand.SubjectId && t.SubjectVisit.VisitNum >= minVisitNum);
|
||||
await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.SubjectId == inCommand.SubjectId && t.SubjectVisit.VisitNum >= minVisitNum);
|
||||
await _dicomInstanceRepository.BatchDeleteNoTrackingAsync(t => t.SubjectId == inCommand.SubjectId && t.SubjectVisit.VisitNum >= minVisitNum);
|
||||
|
||||
|
||||
|
||||
//解除当前以及后续访视检查绑定关系
|
||||
await _studySubjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectVisit.VisitNum >= minVisitNum && t.SubjectVisit.SubjectId == inCommand.SubjectId, u => new SCPStudySubjectVisit() { StudyId = null });
|
||||
|
||||
await _subjectPatientRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == inCommand.SubjectId, u => new SubjectPatient() { IsBinded = false });
|
||||
|
||||
//清理任务
|
||||
|
||||
var deleteVisitTaskIdList = _repository.Where<VisitTask>(t => t.SubjectId == inCommand.SubjectId && t.SourceSubjectVisit.VisitNum >= minVisitNum).Select(t => t.Id).ToList();
|
||||
|
||||
await _repository.BatchDeleteNoTrackingAsync<VisitTask>(t => t.SubjectId == inCommand.SubjectId && t.SourceSubjectVisit.VisitNum >= minVisitNum);
|
||||
|
||||
|
||||
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingCustomTag>(t => deleteVisitTaskIdList.Contains(t.VisitTaskId));
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingGlobalTaskInfo>(t => t.TrialId == inCommand.TrialId && deleteVisitTaskIdList.Contains(t.TaskId));
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingJudgeInfo>(t => t.TrialId == inCommand.TrialId && (deleteVisitTaskIdList.Contains(t.TaskIdOne) || deleteVisitTaskIdList.Contains(t.TaskIdTwo)));
|
||||
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingOncologyTaskInfo>(t => deleteVisitTaskIdList.Contains(t.VisitTaskId));
|
||||
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingTaskQuestionAnswer>(t => t.TrialId == inCommand.TrialId && deleteVisitTaskIdList.Contains(t.VisitTaskId));
|
||||
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingTableAnswerRowInfo>(t => t.TrialId == inCommand.TrialId && deleteVisitTaskIdList.Contains(t.VisitTaskId));
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingTableQuestionAnswer>(t => t.TrialId == inCommand.TrialId && deleteVisitTaskIdList.Contains(t.VisitTaskId));
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingTaskQuestionMark>(t => t.VisitTask.TrialId == inCommand.TrialId && deleteVisitTaskIdList.Contains(t.VisitTaskId));
|
||||
|
||||
await _repository.BatchDeleteNoTrackingAsync<ReadingTaskRelation>(t => t.VisitTask.TrialId == inCommand.TrialId && deleteVisitTaskIdList.Contains(t.TaskId));
|
||||
|
||||
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region 医院信息管理
|
||||
|
||||
|
|
@ -649,7 +725,7 @@ namespace IRaCIS.Application.Services
|
|||
#region new ok
|
||||
var query = _patientRepository.Where(t => isAdminOrOA ? true : t.SCPStudyList.Any(c => c.HospitalGroupList.Any(c => currentUserHospitalGroupIdList.Contains(c.HospitalGroupId))))
|
||||
|
||||
.WhereIf(inQuery.CalledAEList.Any(), t => t.SCPStudyList.Any(c=> inQuery.CalledAEList.Contains(c.CalledAE)))
|
||||
.WhereIf(inQuery.CalledAEList.Any(), t => t.SCPStudyList.Any(c => inQuery.CalledAEList.Contains(c.CalledAE)))
|
||||
.WhereIf(inQuery.HospitalGroupIdList.Any(), t => t.SCPStudyList.Any(c => c.HospitalGroupList.Any(c => inQuery.HospitalGroupIdList.Contains(c.HospitalGroupId))))
|
||||
.WhereIf(inQuery.PatientHospitalGroupTagIdList.Any(), t => t.PatientHospitalGroupTagList.Any(k => inQuery.PatientHospitalGroupTagIdList.Contains(k.HospitalGroupTagId)))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientIdStr), t => t.PatientIdStr.Contains(inQuery.PatientIdStr))
|
||||
|
|
@ -858,7 +934,7 @@ namespace IRaCIS.Application.Services
|
|||
SeriesCount = scpStudy.SeriesCount,
|
||||
StudyTime = scpStudy.StudyTime,
|
||||
StudyIdStr = scpStudy.StudyId,
|
||||
StudyInstanceUid= scpStudy.StudyInstanceUid,
|
||||
StudyInstanceUid = scpStudy.StudyInstanceUid,
|
||||
|
||||
HospitalGroupList = scpStudy.HospitalGroupList.Select(t => new SCPStudyHospitalGroupInfo()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ public class DicomInstance : BaseFullAuditEntity, IEntitySeqId
|
|||
[ForeignKey("StudyId")]
|
||||
public DicomStudy DicomStudy { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public SubjectVisit SubjectVisit { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public List<ReadingTableAnswerRowInfo> ReadingTableAnswerRowInfoList { get; set; }
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@ public class DicomSeries : BaseFullDeleteAuditEntity, IEntitySeqId
|
|||
[JsonIgnore]
|
||||
public List<DicomInstance> DicomInstanceList { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public SubjectVisit SubjectVisit { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public List<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilterList { get; set; }
|
||||
#endregion
|
||||
|
|
|
|||
Loading…
Reference in New Issue