增加影像退回接口
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 string Path { get; set; }
|
||||||
public long? FileSize { 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
|
) : 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 医院信息管理
|
#region 医院信息管理
|
||||||
|
|
||||||
|
|
@ -649,7 +725,7 @@ namespace IRaCIS.Application.Services
|
||||||
#region new ok
|
#region new ok
|
||||||
var query = _patientRepository.Where(t => isAdminOrOA ? true : t.SCPStudyList.Any(c => c.HospitalGroupList.Any(c => currentUserHospitalGroupIdList.Contains(c.HospitalGroupId))))
|
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.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(inQuery.PatientHospitalGroupTagIdList.Any(), t => t.PatientHospitalGroupTagList.Any(k => inQuery.PatientHospitalGroupTagIdList.Contains(k.HospitalGroupTagId)))
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientIdStr), t => t.PatientIdStr.Contains(inQuery.PatientIdStr))
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientIdStr), t => t.PatientIdStr.Contains(inQuery.PatientIdStr))
|
||||||
|
|
@ -858,7 +934,7 @@ namespace IRaCIS.Application.Services
|
||||||
SeriesCount = scpStudy.SeriesCount,
|
SeriesCount = scpStudy.SeriesCount,
|
||||||
StudyTime = scpStudy.StudyTime,
|
StudyTime = scpStudy.StudyTime,
|
||||||
StudyIdStr = scpStudy.StudyId,
|
StudyIdStr = scpStudy.StudyId,
|
||||||
StudyInstanceUid= scpStudy.StudyInstanceUid,
|
StudyInstanceUid = scpStudy.StudyInstanceUid,
|
||||||
|
|
||||||
HospitalGroupList = scpStudy.HospitalGroupList.Select(t => new SCPStudyHospitalGroupInfo()
|
HospitalGroupList = scpStudy.HospitalGroupList.Select(t => new SCPStudyHospitalGroupInfo()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ public class DicomInstance : BaseFullAuditEntity, IEntitySeqId
|
||||||
[ForeignKey("StudyId")]
|
[ForeignKey("StudyId")]
|
||||||
public DicomStudy DicomStudy { get; set; }
|
public DicomStudy DicomStudy { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public SubjectVisit SubjectVisit { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<ReadingTableAnswerRowInfo> ReadingTableAnswerRowInfoList { get; set; }
|
public List<ReadingTableAnswerRowInfo> ReadingTableAnswerRowInfoList { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,9 @@ public class DicomSeries : BaseFullDeleteAuditEntity, IEntitySeqId
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<DicomInstance> DicomInstanceList { get; set; }
|
public List<DicomInstance> DicomInstanceList { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public SubjectVisit SubjectVisit { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilterList { get; set; }
|
public List<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilterList { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue