123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Vinno.FIS.Sonopost.Common;
- using Vinno.FIS.Sonopost.Features.Dicom;
- using Vinno.FIS.Sonopost.Helpers;
- using Vinno.FIS.Sonopost.Settings;
- using Vinno.FIS.Sonopost.WebApi.Models;
- namespace Vinno.FIS.Sonopost.WebApi.Controllers
- {
- [WebApiController]
- internal class DicomController : BaseController
- {
- /// <summary>
- /// 获取超声DICOM信息
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetSonoInfo()
- {
- DicomSonoSettingModel model = new DicomSonoSettingModel
- {
- IsEnable = SonopostUserDefinedSettings.Instance.DicomSetting.UseDicomService,
- Title = SonopostUserDefinedSettings.Instance.DicomSetting.DicomTitile,
- Port = SonopostUserDefinedSettings.Instance.DicomSetting.DicomPort.ToString(),
- TempFileDays = SonopostUserDefinedSettings.Instance.DicomSetting.TempFileDays,
- };
- return Result.Success(model);
- }
- /// <summary>
- /// 保存超声DICOM信息
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result SaveSonoInfo(DicomSonoSettingModel model)
- {
- SonopostUserDefinedSettings.Instance.DicomSetting.UseDicomService = model.IsEnable;
- SonopostUserDefinedSettings.Instance.DicomSetting.DicomTitile = model.Title;
- if (int.TryParse(model.Port, out var port))
- {
- SonopostUserDefinedSettings.Instance.DicomSetting.DicomPort = port;
- }
- SonopostUserDefinedSettings.Instance.DicomSetting.TempFileDays = model.TempFileDays;
- ConfigManager.Save();
- DicomServerManager.ChangeValue();
- return Result.Success();
- }
- /// <summary>
- /// 获取工作站DICOM信息
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetStationInfo()
- {
- DicomStationSettingModel model = new DicomStationSettingModel
- {
- IsEnable = SonopostUserDefinedSettings.Instance.DicomSetting.UseWorkStationProxy,
- Title = SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationTitle,
- Port = SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationPort.ToString(),
- Address = SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationIpAddress,
- };
- return Result.Success(model);
- }
- /// <summary>
- /// 保存工作站DICOM信息
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result SaveStationInfo(DicomStationSettingModel model)
- {
- SonopostUserDefinedSettings.Instance.DicomSetting.UseWorkStationProxy = model.IsEnable;
- SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationTitle = model.Title;
- if (int.TryParse(model.Port, out var workstationPort))
- {
- SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationPort = workstationPort;
- }
- SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationIpAddress = model.Address;
- ConfigManager.Save();
- return Result.Success();
- }
- /// <summary>
- /// dicom 测试
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result TestDicom(DicomStationSettingModel model)
- {
- var localTitle = SonopostUserDefinedSettings.Instance.DicomSetting.DicomTitile;
- if (int.TryParse(model.Port, out var port))
- {
- var result = DicomHelper.TestDicomAsync(model.Address, port, localTitle, model.Title).GetAwaiter().GetResult();
- return result ? Result.Success() : Result.Fail();
- }
- return Result.Fail();
- }
- /// <summary>
- /// 重传DICOM失败记录
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result ReuploadFailedRecord(DicomFailActionRequest request)
- {
- RemedicalManager.Retry(request.Id);
- return Result.Success();
- }
- /// <summary>
- /// 删除DICOM失败记录
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result DeleteFailedRecord(DicomFailActionRequest request)
- {
- RemedicalManager.Delete(request.Id);
- return Result.Success();
- }
- /// <summary>
- /// 获取DICOM失败列表
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result GetFailedList(DicomFailListRequest request)
- {
- var allList = RemedicalManager.GetConvertFailContexts().Where(x => x.Status != DicomUploadStatus.Create).ToList();
- if (!string.IsNullOrWhiteSpace(request.FailType) && Enum.TryParse(request.FailType, out DicomUploadStatus status))
- {
- if (status == DicomUploadStatus.UploadFail)
- {
- allList = allList.Where(x => x.Status == status || x.Status == DicomUploadStatus.CreateScanDataFail || x.Status == DicomUploadStatus.UploadFailBecauseExamIsFinished)?.ToList() ?? new List<DicomUploadContext>();
- }
- else
- {
- allList = allList.Where(x => x.Status == status)?.ToList() ?? new List<DicomUploadContext>();
- }
- }
- PagedListResponse<dynamic> response = new PagedListResponse<dynamic>
- {
- TotalCount = allList.Count,
- DataList = allList.Skip(request.LimitStart).Take(request.PageSize).Select(x => new
- {
- x.Id,
- x.ScanId,
- x.Status,
- x.PatientId,
- x.PatientName,
- x.CreateTime,
- //x.DicomPath,
- })
- };
- return Result.Success(response);
- }
- /// <summary>
- /// 获取图像采集设定
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetCaptureSetting()
- {
- CaptureSettingModel captureSettingMode = new CaptureSettingModel
- {
- CaptureEnabled = SonopostUserDefinedSettings.Instance.CaptureSetting.RealTimeCaptureEnabled,
- ImageCaptureForFootToggleKey = (int)SonopostUserDefinedSettings.Instance.CaptureSetting.ImageCaptureKeyForFootToogle,
- VideoCaptureForFootToggleKey = (int)SonopostUserDefinedSettings.Instance.CaptureSetting.VideoCaptureKeyForFootToggle,
- FootToggleLeftKeyForKeyBoard = (int)SonopostUserDefinedSettings.Instance.CaptureSetting.FootToggleLeftKeyForKeyBoard,
- FootToggleRightKeyForKeyBoard = (int)SonopostUserDefinedSettings.Instance.CaptureSetting.FootToggleRightKeyForKeyBoard,
- };
- return Result.Success(captureSettingMode);
- }
- /// <summary>
- /// 保存图像采集设定
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result SaveCaptureSetting(CaptureSettingModel captureSettingModel)
- {
- if (captureSettingModel.ImageCaptureForFootToggleKey == captureSettingModel.VideoCaptureForFootToggleKey)
- {
- return Result.Fail("FootToggleConflict");
- }
- if (captureSettingModel.FootToggleLeftKeyForKeyBoard == captureSettingModel.FootToggleRightKeyForKeyBoard)
- {
- return Result.Fail("KeyBoardKeyConflict");
- }
- if (LoginManager.IsConnectWithOldServer && captureSettingModel.CaptureEnabled)
- {
- return Result.Fail("ServerNotSupport");
- }
- SonopostUserDefinedSettings.Instance.CaptureSetting.RealTimeCaptureEnabled = captureSettingModel.CaptureEnabled;
- SonopostUserDefinedSettings.Instance.CaptureSetting.ImageCaptureKeyForFootToogle = (EnumFootToggleKey)captureSettingModel.ImageCaptureForFootToggleKey;
- SonopostUserDefinedSettings.Instance.CaptureSetting.VideoCaptureKeyForFootToggle = (EnumFootToggleKey)captureSettingModel.VideoCaptureForFootToggleKey;
- SonopostUserDefinedSettings.Instance.CaptureSetting.FootToggleLeftKeyForKeyBoard = (EnumKeyboardKey)captureSettingModel.FootToggleLeftKeyForKeyBoard;
- SonopostUserDefinedSettings.Instance.CaptureSetting.FootToggleRightKeyForKeyBoard = (EnumKeyboardKey)captureSettingModel.FootToggleRightKeyForKeyBoard;
- ConfigManager.Save();
- if (SonopostUserDefinedSettings.Instance.CaptureSetting.RealTimeCaptureEnabled)
- {
- KeyBoardListenManager.StartKeyBoardListen();
- }
- else
- {
- KeyBoardListenManager.StopKeyBoardListen();
- }
- LiveVideoManager.ChangeRealTimeCaptureSetting();
- return Result.Success();
- }
- /// <summary>
- /// 清理缓存
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result ClearRemedicalCache()
- {
- RemedicalManager.ClearRemedicalCache();
- return Result.Success();
- }
- }
- }
|