12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using Dicom;
- using Dicom.Network;
- using System;
- using Vinno.FIS.Sonopost.Settings;
- using Vinno.IUS.Common.Log;
- using DicomClient = Dicom.Network.Client.DicomClient;
- namespace Vinno.FIS.Sonopost.Features.Dicom
- {
- internal class DicomForwardQueue : DicomOperateQueue
- {
- private static volatile DicomForwardQueue _instance;
- public static DicomForwardQueue Instance => _instance ?? (_instance = new DicomForwardQueue());
- private DicomForwardQueue() : base("ForwardDicomQueue")
- {
- }
- protected override bool DoWork(DicomFile dicomFile)
- {
- try
- {
- var useProxy = SonopostUserDefinedSettings.Instance.DicomSetting.UseWorkStationProxy;
- if (useProxy)
- {
- var patientId = dicomFile.GetPatientId();
- var newGuid = Guid.NewGuid().ToString("N").ToUpper();
- SendToWorkstation(dicomFile, patientId);
- }
- }
- catch (Exception e)
- {
- Logger.WriteLineError($"Forward dicom Error:{e}");
- }
- return true;
- }
- protected override bool DoWork(VidInfo vidInfo)
- {
- return false;
- }
- private async void SendToWorkstation(DicomFile file, string patientId)
- {
- try
- {
- //TODO:send to list of server
- Logger.WriteLineInfo($"Begin send dicom to third workstation,PatientId:{patientId}");
- var address = SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationIpAddress;
- var port = SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationPort;
- var targetAeTitle = SonopostUserDefinedSettings.Instance.DicomSetting.WorkStationTitle;
- var localAeTitle = SonopostUserDefinedSettings.Instance.DicomSetting.DicomTitile;
- var dicomClient = new DicomClient(address, port, false, localAeTitle, targetAeTitle);
- await dicomClient.AddRequestAsync(new DicomCStoreRequest(file));
- await dicomClient.SendAsync();
- Logger.WriteLineInfo($"End send dicom to third workstation,PatientId:{patientId}");
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"SendToWorkstation error:{ex.Message}");
- }
- }
- }
- }
|