//-------------------------------------------------------------------- // 此代码由T4模板自动生成 byzhouhang 20210918 // 生成时间 2024-03-22 15:44:31 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 //-------------------------------------------------------------------- using FellowOakDicom.Network; using FellowOakDicom.Network.Client; using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Application.ViewModel; using Microsoft.AspNetCore.Mvc; namespace IRaCIS.Core.Application.Service { /// /// DicomAEService /// [ApiExplorerSettings(GroupName = "Trial")] public class TrialDicomAEService(IRepository _dicomAERepository, IRepository _trialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IDicomAEService { [HttpPost] public async Task>> GetDicomAEList(DicomAEQuery inQuery) { var dicomAEQueryable = _dicomAERepository .WhereIf(!string.IsNullOrWhiteSpace(inQuery.IP), t => t.IP.Contains(inQuery.IP)) .WhereIf(inQuery.Port != null, t => t.Port == inQuery.Port) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.CalledAE), t => t.CalledAE.Contains(inQuery.CalledAE)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Description), t => t.Description.Contains(inQuery.Description)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Modality), t => t.Modality.Contains(inQuery.Modality)) .ProjectTo(_mapper.ConfigurationProvider); var pageList = await dicomAEQueryable.ToPagedListAsync(inQuery); return ResponseOutput.Ok(pageList); } /// /// 获取项目dicom AE 配置信息,otherinfo里面有IsPACSConnect IsTrialPACSConfirmed /// /// /// public async Task> GetTrialDicomAE(Guid trialId) { var dicomAE = _dicomAERepository.Where(t => t.TrialId == trialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); var trialConfig = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.IsPACSConnect, t.IsTrialPACSConfirmed }).FirstOrDefaultAsync(); return ResponseOutput.Ok(dicomAE, trialConfig); } //public async Task AddOrUpdateDicomAE(DicomAEAddOrEdit addOrEditDicomAE) //{ // var verifyExp1 = new EntityVerifyExp() // { // VerifyExp = u => u.IP == addOrEditDicomAE.IP && u.Port == addOrEditDicomAE.Port && u.TrialId == addOrEditDicomAE.TrialId, // //"不允许添加相同的IP和端口的记录" // VerifyMsg = _localizer["TrialDicomAE_RepeatIPAndPort"] // }; // var verifyExp2 = new EntityVerifyExp() // { // VerifyExp = u => u.CalledAE == addOrEditDicomAE.CalledAE, // //"AE名称不能与其他项目相同" // VerifyMsg = _localizer["TrialDicomAE_RepeatCalledAE"] // }; // var verifyExp3 = new EntityVerifyExp() // { // VerifyExp = u => u.TrialId == addOrEditDicomAE.TrialId, // //"AE名称不能与其他项目相同" // VerifyMsg = "该项目只允许添加一条dicom AE记录(前端对接有bug时出现)" // }; // //var verifyExp2 = new EntityVerifyExp() // //{ // // VerifyExp = u => u.TrialId == addOrEditDicomAE.TrialId, // // VerifyMsg = "只允许配置一条记录", // // IsVerify=addOrEditDicomAE.Id==null // //}; // await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == addOrEditDicomAE.TrialId, u => new Trial() { IsPACSConnect = addOrEditDicomAE.IsPACSConnect }, true); // if (addOrEditDicomAE.IsPACSConnect) // { // // 在此处拷贝automapper 映射 // var entity = await _dicomAERepository.InsertOrUpdateAsync(addOrEditDicomAE, true, verifyExp3, verifyExp1, verifyExp2); // return ResponseOutput.Ok(entity.Id.ToString()); // } // else // { // return ResponseOutput.Ok(); // } //} [HttpDelete("{dicomAEId:guid}")] public async Task DeleteDicomAE(Guid dicomAEId) { var success = await _dicomAERepository.DeleteFromQueryAsync(t => t.Id == dicomAEId, true); return ResponseOutput.Ok(); } ///// ///// 测试scp server 是否可以连接 ///// ///// //[HttpPost] //public async Task TestSCPServerConnect(TestAECommand inCommand) //{ // try // { // var client = DicomClientFactory.Create(inCommand.IP, inCommand.Port, false, "test-callingAE", inCommand.CalledAE); // client.NegotiateAsyncOps(); // await client.AddRequestAsync(new DicomCEchoRequest()); // // 创建一个超时任务,设置超时时间为1秒 // var timeoutTask = Task.Delay(TimeSpan.FromSeconds(3)); // // 发送 DICOM 请求 // var sendTask = client.SendAsync(); // // 等待任务完成,若超时任务先完成则抛出超时异常 // if (await Task.WhenAny(sendTask, timeoutTask) == timeoutTask) // { // throw new TimeoutException("DICOM 请求超时。"); // } // return true; // } // catch (Exception ex) // { // return false; // } //} } }