Example #1
0
        private List <Study> GetStudies(RetriveEntity RetriveFrom, DicomCFindRequest request)
        {
            DicomClient _client = new DicomClient();

            _studyList = new List <Study>();
            request.OnResponseReceived = (DicomCFindRequest rec_request, DicomCFindResponse response) =>
            {
                if (response.HasDataset)
                {
                    _studyList.Add(FillStudy(response.Dataset));
                }
                autoEvent.Set();
            };
            _client.AddRequest(request);
            if (RetriveFrom == RetriveEntity.Modality)
            {
                _client.Send(_MoverSettings.Host, _MoverSettings.Port, false, _MoverSettings.Store_AE_Name, _MoverSettings.CalledAE);
            }
            else
            {
                _client.Send(_MoverSettings.StoreHost, _MoverSettings.StorePort, false, _MoverSettings.Store_AE_Name, _MoverSettings.CalledAE);
            }

            autoEvent.WaitOne();
            return(_studyList);
        }
Example #2
0
        public void SendStudies(RetriveEntity RetriveFrom, string StudyInstanceUID, string SeriesInstanceUid, string Modality)
        {
            var path = GetStudyFolderPath(StudyInstanceUID);

            if (!Directory.Exists(GetSeriesFolderPath(StudyInstanceUID, SeriesInstanceUid)))
            {
                MoveStudies(RetriveFrom, StudyInstanceUID, SeriesInstanceUid);
            }

            SendStudies(Directory.GetFiles(GetSeriesFolderPath(StudyInstanceUID, SeriesInstanceUid), "*.*", SearchOption.AllDirectories));
        }
Example #3
0
        public List <Study> GetStudiesStudyLevel(RetriveEntity RetriveFrom, string PatientId, string PatientName, DateTime?Fromdate, DateTime?Todate, string accession,
                                                 string studyId, string modalitiesInStudy, string studyInstanceUid)
        {
            DicomDateRange dcmdateRange = null;

            if (Fromdate.HasValue && Todate.HasValue)
            {
                dcmdateRange = new DicomDateRange(Fromdate.Value, Todate.Value);
            }
            var request = DicomCFindRequest.CreateStudyQuery(PatientId, PatientName, dcmdateRange, accession, studyId, modalitiesInStudy, studyInstanceUid);

            return(GetStudies(RetriveFrom, request));
        }
Example #4
0
 private void GetEntityInfo(RetriveEntity EntityType, out string HostName, out int Port, out string CalledAE)
 {
     if (EntityType == RetriveEntity.Modality)
     {
         HostName = _MoverSettings.Host;
         Port     = _MoverSettings.Port;
         CalledAE = _MoverSettings.CalledAE;
     }
     else
     {
         HostName = _MoverSettings.StoreHost;
         Port     = _MoverSettings.StorePort;
         CalledAE = _MoverSettings.StoreCalledAE;
     }
 }
Example #5
0
        private void MoveStudies(RetriveEntity RetriveFrom, DicomCMoveRequest cmoveRequest)
        {
            //Try to open Local SCP for CStore Support for comming files
            if (_scuStore == null)
            {
                _scuStore = new DicomServer <CStoreSCU>(_MoverSettings.LocalPort);
            }
            DicomClient clt = new DicomClient();

            cmoveRequest.OnResponseReceived = (request, response) =>
            {
            };
            // Add request to Dicom Client Object.
            clt.AddRequest(cmoveRequest);

            string Host, CalledAE;
            int    Port;

            GetEntityInfo(RetriveFrom, out Host, out Port, out CalledAE);
            clt.Send(Host, Port, false, _MoverSettings.Store_AE_Name, CalledAE);
            autoEvent.WaitOne();
        }
Example #6
0
        public void SendStudies(RetriveEntity RetriveFrom, string StudyInstanceUID, string Modality)
        {
            var          path = GetStudyFolderPath(StudyInstanceUID);
            List <Study> StudiesToTransfer = GetStudiesSeriesLevel(RetriveFrom, StudyInstanceUID, Modality);

            if (!Directory.Exists(path))
            {
                MoveStudies(RetriveFrom, StudyInstanceUID);
            }
            else
            {
                foreach (var item in StudiesToTransfer)
                {
                    if (!Directory.Exists(Path.Combine(path, item.SeriesUID)))
                    {
                        MoveStudies(RetriveFrom, StudyInstanceUID, item.SeriesUID);
                    }
                }
            }

            SendStudies(Directory.GetFiles(GetStudyFolderPath(StudyInstanceUID), "*.*", SearchOption.AllDirectories));
        }
Example #7
0
        public void MoveStudies(RetriveEntity RetriveFrom, string StudyInstanceUID, string seriesInstanceUid)
        {
            DicomCMoveRequest cmove = new DicomCMoveRequest(_MoverSettings.Store_AE_Name, StudyInstanceUID, seriesInstanceUid);

            MoveStudies(RetriveFrom, cmove);
        }
Example #8
0
        //public List<Study> GetStudies(RetriveEntity RetriveFrom, string PatientId, string PatientName, DicomDateRange DateRange, string accession,
        //    string studyId, string modalitiesInStudy, string studyInstanceUid)
        //{
        //    var request = DicomCFindRequest.CreateStudyQuery(PatientId, PatientName, DateRange, accession, studyId, modalitiesInStudy, studyInstanceUid);
        //    return GetStudies(RetriveFrom, request);
        //}

        public List <Study> GetStudiesSeriesLevel(RetriveEntity RetriveFrom, string studyInstanceUid, string modality)
        {
            var request = DicomCFindRequest.CreateSeriesQuery(studyInstanceUid, modality);

            return(GetStudies(RetriveFrom, request));
        }
Example #9
0
        public List <Study> GetStudiesPatientLevel(RetriveEntity RetriveFrom, string PatientID = null, string PatientName = null)
        {
            var request = DicomCFindRequest.CreatePatientQuery(PatientID, PatientName);

            return(GetStudies(RetriveFrom, request));
        }