public DownloadInfo[] GetDownloadInfos(string sUserName, PACSConnection server, string client, string patientID, string studyInstanceUID, string seriesInstanceUID, string sopInstanceUID, DownloadStatus status) { List <DownloadInfo> di = new List <DownloadInfo>(); JobsProxy jsp = new JobsProxy(_DownloadJobsDataAccessAgent); JobProxy[] jpa = jsp.GetAll(EncodeStatus(status), EncodeCompletedStatus(status), sUserName); foreach (JobProxy jp in jpa) { if (jp.Match(patientID, studyInstanceUID, seriesInstanceUID, sopInstanceUID)) { di.Add(UpdateDownloadInfoStatus(sUserName, new DownloadInfo() { Id = jp.Id.ToString() })); } } return(di.ToArray()); }
public DownloadInfo[] GetDownloadInfos ( string authenticationCookie, PACSConnection server, string client, string patientID, string studyInstanceUID, string seriesInstanceUID, string sopInstanceUID, DownloadStatus status, ExtraOptions extraOptions) { string userName; userName = ServiceUtils.Authorize(authenticationCookie, PermissionsTable.Instance.CanDownloadImages); return(_addin.GetDownloadInfos(userName, server, client, patientID, studyInstanceUID, seriesInstanceUID, sopInstanceUID, status)); }
private MoveObjectsJob CreateJob(PACSConnection server, string MoveToAe, string PatientID, string StudyInstanceUID, string SeriesInstanceUID, string SOPInstanceUID) { DICOMJobSettings _js = new DICOMJobSettings() { ServerAE = server.AETitle, ServerPort = server.Port, ServerIP = server.IPAddress, ClientAE = LocalClient.AETitle, ClientIP = LocalClient.IPAddress, ClientPort = LocalClient.Port, MoveToClientAE = MoveToAe }; MoveObjectsJobConfig mc = new MoveObjectsJobConfig() { PatientID = PatientID, StudyInstanceUID = StudyInstanceUID, SeriesInstanceUID = SeriesInstanceUID, SOPInstanceUID = SOPInstanceUID }; MoveObjectsJob mj = new MoveObjectsJob(_js); mc.Config(mj); return(mj); }
public DownloadAddin(PACSConnection localClient, PACSConnection storageServer, IDownloadJobsDataAccessAgent DownloadJobsDataAccessAgent, IAuthorizedStorageDataAccessAgent DataAccess) { LocalClient = localClient; StorageServer = storageServer; _AuthorizedDataAccessAgent = DataAccess; _DownloadJobsDataAccessAgent = DownloadJobsDataAccessAgent; }
private void ReadAppSettings() { StorageServerServicePath = ServiceUtils.MapConfigPath(ConfigurationManager.AppSettings.Get("storageServerServicePath")); { ClientConnection = new PACSConnection(); //the client AE/IP/port used for connecting to remote PACS for query ClientConnection.AETitle = ConfigurationManager.AppSettings.Get("ClientAe"); if (string.IsNullOrEmpty(ClientConnection.AETitle)) { ClientConnection.AETitle = "LTCLIENT19"; } ClientConnection.IPAddress = ConfigurationManager.AppSettings.Get("ClientIP"); if (string.IsNullOrEmpty(ClientConnection.IPAddress)) { ClientConnection.IPAddress = ServiceUtils.GetLocalIPAddressesV4(); } ClientConnection.Port = ParseTools.Int(ConfigurationManager.AppSettings.Get("ClientPort"), ServiceUtils.GetFreeIPPort()); } { StorageServerConnection = new PACSConnection(); StorageServerConnection.AETitle = ConfigurationManager.AppSettings.Get("ServerAe"); StorageServerConnection.IPAddress = ConfigurationManager.AppSettings.Get("ServerIP"); StorageServerConnection.Port = ParseTools.Int(ConfigurationManager.AppSettings.Get("ServerPort"), -1); //read default storage server dicom connection settings if (!string.IsNullOrEmpty(StorageServerServicePath) && (string.IsNullOrEmpty(StorageServerConnection.AETitle) || string.IsNullOrEmpty(StorageServerConnection.IPAddress) || StorageServerConnection.Port <= 0)) { try { var settingsFile = Path.Combine(StorageServerServicePath, "settings.xml"); var doc = XDocument.Load(settingsFile); { StorageServerConnection.Port = ParseTools.Int(doc.Descendants("Port").First().Value, -1); StorageServerConnection.IPAddress = doc.Descendants("IpAddress").First().Value; StorageServerConnection.AETitle = doc.Descendants("AETitle").First().Value; } } catch { } } if (string.IsNullOrEmpty(StorageServerConnection.AETitle)) { StorageServerConnection.AETitle = "LTSTORAGESERVER"; } } }
private static AeInfo GetScp(PACSConnection server) { AeInfo scpInfo; scpInfo = new AeInfo( ); scpInfo.AETitle = server.AETitle; scpInfo.Address = server.IPAddress; scpInfo.Port = server.Port; return(scpInfo); }
/// <summary> /// query a DICOM server for series data (Series Level query) /// </summary> /// <param name="server">remote server info</param> /// <param name="client">query client info</param> /// <param name="options">query options</param> /// <param name="extraOptions">custom data</param> /// <returns>returns the found Series</returns> public SeriesData[] FindSeries ( PACSConnection server, ClientConnection client, QueryOptions options ) { AeInfo scpInfo; AeInfo scuInfo; scpInfo = GetScp(server); scuInfo = GetScu(client); QueryProcessor <SeriesData> query = new QueryProcessor <SeriesData> (scpInfo, scuInfo); return(query.DoFind(GetSeriesQuery(options))); }
public DownloadInfo DownloadImages ( string authenticationCookie, PACSConnection server, string client, string PatientID, string StudyInstanceUID, string SeriesInstanceUID, string SOPInstanceUID, ExtraOptions extraOptions ) { string userName; userName = ServiceUtils.Authorize(authenticationCookie, PermissionsTable.Instance.CanDownloadImages); return(_addin.DownloadImages(userName, server, "LTSTORAGESERVER", PatientID, StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, null != extraOptions?extraOptions.UserData:"")); }
public DownloadInfo DownloadImages(string sUserName, PACSConnection server, string MoveToAE, string PatientID, string StudyInstanceUID, string SeriesInstanceUID, string SOPInstanceUID, string UserData) { JobProxy jp = new JobProxy(_DownloadJobsDataAccessAgent); jp.AddJob(typeof(MoveObjectsJob).ToString(), JobsPersistence.Save(CreateJob(server, MoveToAE, PatientID, StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID)), 0, 0, UserData, sUserName); try { using (ImageDownloadAddin.WebAddin WebInterface = new ImageDownloadAddin.WebAddin()) { WebInterface.SendDownloadRequest(jp.Id.ToString(), LocalClient.AETitle, LocalClient.IPAddress, LocalClient.Port, StorageServer.AETitle, StorageServer.IPAddress, StorageServer.Port); } } catch (System.Exception ex) { jp.SetFailed_NotExecutedYet("Error connecting to the Archive server: " + ex.Message); } return(UpdateDownloadInfoStatus(sUserName, new DownloadInfo() { Id = jp.Id.ToString() })); }
public string VerifyConnection(PACSConnection server, ClientConnection client) { AeInfo scpInfo = GetScp(server); using (StoreScu scu = new StoreScu()) { DicomScp scp = new DicomScp(IPAddress.Parse(scpInfo.Address), scpInfo.AETitle, scpInfo.Port); scu.AETitle = client.AETitle; try { if (scu.Verify(scp)) { return(string.Empty); } } catch (Exception exception) { return(exception.Message); } } return(string.Empty); }
public string VerifyConnection(string authenticationCookie, PACSConnection server, ClientConnection client, ExtraOptions extraOptions) { ServiceUtils.Authenticate(authenticationCookie); return(AddinsFactory.CreatePacsQueryAddin().VerifyConnection(server, client)); }
public DICOMQueryResult ElectStudyTimeLineInstances(string authenticationCookie, PACSConnection server, ClientConnection client, QueryOptions options, ExtraOptions extraOptions) { DICOMQueryResult result = new DICOMQueryResult(); StudyData[] StudiesDataArray = FindStudies(authenticationCookie, server, client, options, extraOptions); result.Studies = StudiesDataArray; SeriesData[] SeriesDataArray = FindSeries(authenticationCookie, server, client, options, extraOptions); result.Series = SeriesDataArray; List <InstanceData> AvailableInstancesList = new List <InstanceData>(); if (null == options.SeriesOptions) { options.SeriesOptions = new SeriesQueryOptions(); } foreach (SeriesData series in SeriesDataArray) { options.SeriesOptions.SeriesInstanceUID = series.InstanceUID; InstanceData[] objectsFound = FindInstances(authenticationCookie, server, client, options, extraOptions); if (objectsFound.Length > 0) { Array.Sort <InstanceData>(objectsFound, CompareFunc); if (string.IsNullOrEmpty(objectsFound[0].SeriesInstanceUID)) { objectsFound[0].SeriesInstanceUID = series.InstanceUID; } AvailableInstancesList.Add(objectsFound[0]); } } result.Instances = AvailableInstancesList.ToArray(); return(result); }
public PACSQueryAddin(PACSConnection localClient) { LocalClient = localClient; }