private void MoveSeries(string studyInstanceUniqueId, IEnumerable<string> seriesInstanceUniqueIds, string applicationEntityDestination)
 {
     DataSet seriesCMoveDataset = new DataSet();
     seriesCMoveDataset.FileMetaInfo = GenerateFileMetaInfo(UIDs.StudyRootQueryRetrieveInformationModelMOVE);
     seriesCMoveDataset.PutCS(Tags.QueryRetrieveLevel, "SERIES");
     seriesCMoveDataset.PutUI(Tags.StudyInstanceUniqueId, studyInstanceUniqueId);
     seriesCMoveDataset.PutUI(Tags.SeriesInstanceUniqueId, seriesInstanceUniqueIds.Distinct().ToArray());
     LogDataSetValues(seriesCMoveDataset);
     CMoveDataSet(seriesCMoveDataset, applicationEntityDestination);
 }
 /// <summary>
 /// Find all the studies for a specific patient
 /// <param name="patientId">The id of the patient</param>
 /// <param name="patientName">The name of the patient</param>
 /// </summary>
 public IList<DataSet> CFindStudy(string patientId, string patientName)
 {
     string queryKey = _aAssociateRequest.ApplicationEntityTitle + _port + _hostName + patientId + patientName;
     if (_cacheManager.ContainsKey(queryKey))
     {
         return _cacheManager[queryKey];
     }
     const string sopClassUniqueId = UIDs.StudyRootQueryRetrieveInformationModelFIND;
     var dataset = new DataSet();
     dataset.FileMetaInfo = GenerateFileMetaInfo(sopClassUniqueId);
     dataset.PutDA(Tags.StudyDate);
     dataset.PutTM(Tags.StudyTime);
     dataset.PutSH(Tags.AccessionNumber);
     dataset.PutCS(Tags.QueryRetrieveLevel, "STUDY");
     dataset.PutCS(Tags.ModalitiesInStudy);
     dataset.PutLO(Tags.InstitutionName);
     dataset.PutPN(Tags.PerformingPhysicianName);
     dataset.PutPN(Tags.ReferringPhysicianName);
     dataset.PutLO(Tags.StudyDescription);
     dataset.PutPN(Tags.PatientName, patientName);
     dataset.PutLO(Tags.PatientID, patientId);
     dataset.PutDA(Tags.PatientBirthDate);
     dataset.PutCS(Tags.PatientSex);
     dataset.PutAS(Tags.PatientAge);
     dataset.PutUI(Tags.StudyInstanceUniqueId);
     dataset.PutSH(Tags.StudyID);
     List<DataSet> datasets = RetrieveDatasetsFromServiceClassProvider(dataset, sopClassUniqueId);
     if (datasets.Any())
     {
         _cacheManager.Add(queryKey, datasets);
     }
     return datasets;
 }
 /// <summary>
 /// Send C-FIND to find the series for the studies 
 /// <param name="studiesInstanceUniqueIds">The studies' instance UniqueIds</param>
 /// </summary>
 public IList<DataSet> CFindSeriesForStudies(IEnumerable<string> studiesInstanceUniqueIds)
 {
     var dataset = new DataSet();
     const string sopClassUniqueId = UIDs.StudyRootQueryRetrieveInformationModelFIND;
     dataset.FileMetaInfo = GenerateFileMetaInfo(sopClassUniqueId);
     dataset.PutCS(Tags.QueryRetrieveLevel, "SERIES");
     dataset.PutCS(Tags.Modality);
     dataset.PutUI(Tags.StudyInstanceUniqueId, studiesInstanceUniqueIds.ToArray());
     dataset.PutUI(Tags.SeriesInstanceUniqueId);
     dataset.PutIS(Tags.SeriesNumber);
     dataset.PutDA(Tags.SeriesDate);
     dataset.PutTM(Tags.SeriesTime);
     dataset.PutLO(Tags.SeriesDescription);
     return studiesInstanceUniqueIds != null && studiesInstanceUniqueIds.Any() ? RetrieveDatasetsFromServiceClassProvider(dataset, sopClassUniqueId) : new List<DataSet>();
 }
 /// <summary>
 /// Find all the studies for the studies Instance UniqueIds
 /// <param name="studyInstanceUniqueIds">The studies' instance UniqueIds</param>
 /// </summary>
 public IList<DataSet> CFindStudies(IEnumerable<string> studyInstanceUniqueIds)
 {
     const string sopClassUniqueId = UIDs.StudyRootQueryRetrieveInformationModelFIND;
     var dataset = new DataSet();
     dataset.FileMetaInfo = GenerateFileMetaInfo(sopClassUniqueId);
     dataset.PutDA(Tags.StudyDate);
     dataset.PutTM(Tags.StudyTime);
     dataset.PutSH(Tags.AccessionNumber);
     dataset.PutCS(Tags.QueryRetrieveLevel, "STUDY");
     dataset.PutCS(Tags.ModalitiesInStudy);
     dataset.PutLO(Tags.InstitutionName);
     dataset.PutPN(Tags.ReferringPhysicianName);
     dataset.PutLO(Tags.StudyDescription);
     dataset.PutPN(Tags.PatientName);
     dataset.PutLO(Tags.PatientID);
     dataset.PutDA(Tags.PatientBirthDate);
     dataset.PutCS(Tags.PatientSex);
     dataset.PutAS(Tags.PatientAge);
     dataset.PutUI(Tags.StudyInstanceUniqueId, studyInstanceUniqueIds.ToArray());
     dataset.PutSH(Tags.StudyID);
     return studyInstanceUniqueIds.Any() ? RetrieveDatasetsFromServiceClassProvider(dataset, sopClassUniqueId) : new List<DataSet>();
 }
 /// <summary>
 /// Send C-FIND for instance
 /// <param name="studyInstanceUniqueIds">The studies' instance UniqueIds</param>
 /// <param name="seriesInstanceUniqueIds">The series' instance UniqueIds</param>
 /// </summary>
 public IList<DataSet> CFindInstance(IEnumerable<string> studyInstanceUniqueIds, IEnumerable<string> seriesInstanceUniqueIds)
 {
     const string sopClassUniqueId = UIDs.StudyRootQueryRetrieveInformationModelFIND;
     var datasets = new List<DataSet>();
     List<string> seriesNotCached = RetrieveItemsFromTheCache(seriesInstanceUniqueIds, datasets);
     List<string> studiesNotCached = RetrieveItemsFromTheCache(studyInstanceUniqueIds, datasets);
     var dataset = new DataSet();
     dataset.FileMetaInfo = GenerateFileMetaInfo(sopClassUniqueId);
     dataset.PutUI(Tags.SOPInstanceUniqueId);
     dataset.PutCS(Tags.QueryRetrieveLevel, "IMAGE");
     dataset.PutUI(Tags.SeriesInstanceUniqueId, seriesNotCached.ToArray());
     dataset.PutUI(Tags.StudyInstanceUniqueId, studiesNotCached.ToArray());
     datasets.AddRange(RetrieveDatasetsFromServiceClassProvider(dataset, sopClassUniqueId));
     return datasets;
 }