コード例 #1
0
        public static List <aim_dotnet.Annotation> LoadAimAnnotations(IEnumerable <string> studyInstanceUids)
        {
            List <aim_dotnet.Annotation> annotationList = new List <aim_dotnet.Annotation>();

            using (aim_dotnet.DcmModel dcmModel = new aim_dotnet.DcmModel())
            {
                foreach (string studyInstanceUID in studyInstanceUids)
                {
                    AimInstanceDictionary            aimInstanceDictionary = GetAimInstanceDictionaryForStudy(studyInstanceUID);
                    List <AimSopInstanceInformation> annotationSopsInfo    = aimInstanceDictionary[studyInstanceUID];
                    if (annotationSopsInfo == null)
                    {
                        continue;
                    }

                    foreach (AimSopInstanceInformation information in annotationSopsInfo)
                    {
                        try
                        {
                            annotationList.AddRange(dcmModel.ReadAnnotationsFromFile(information.InstanceFileName));
                        }
                        catch (Exception ex)
                        {
                            Platform.Log(LogLevel.Error, ex);
                        }
                    }
                }
            }

            return(annotationList.Count > 0 ? annotationList : null);
        }
コード例 #2
0
        // Retrieves an informational dictionary for all available annotations for a given study
        public static AimInstanceDictionary GetAimInstanceDictionaryForStudy(string studyInstanceUID)
        {
            AimInstanceDictionary annotationDictionary = new AimInstanceDictionary();

            StudyItemList studyAnnotations = RetrieveAnnotationsInformationForStudy(studyInstanceUID);             // TODO - switch to using SR IOD when we have it

            if (studyAnnotations == null || studyAnnotations.Count == 0)
            {
                return(annotationDictionary);
            }

            using (IDataStoreReader reader = DataAccessLayer.GetIDataStoreReader())
            {
                foreach (StudyItem studyItem in studyAnnotations)
                {
                    ClearCanvas.Dicom.DataStore.Study study = reader.GetStudy(studyItem.StudyInstanceUid) as ClearCanvas.Dicom.DataStore.Study;
                    if (study != null)
                    {
                        IEnumerable <ISeries> allSeries = study.GetSeries();
                        foreach (ISeries series in allSeries)
                        {
                            if (series != null && series.Modality == "SR")
                            {
                                IEnumerable <ISopInstance> sopInstances = series.GetSopInstances();
                                foreach (ISopInstance sopInstance in sopInstances)
                                {
                                    if (sopInstance != null)
                                    {
                                        DicomUri fileUri = sopInstance.GetLocationUri();
                                        if (fileUri.IsFile)
                                        {
                                            annotationDictionary.Add(study.StudyInstanceUid, series.SeriesInstanceUid, sopInstance.SopInstanceUid, fileUri.LocalDiskPath);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                // TODO:
                // 1. Find and load all annotations (read-only?)
                //      LocalDataStoreActivityMonitor.Instance.
            }

            return(annotationDictionary);
        }
コード例 #3
0
        public static AimInstanceDictionary GetAimInstanceDictionaryForStudy(string studyInstanceUID)
        {
            var annotationDictionary = new AimInstanceDictionary();
            var studyAnnotations     = RetrieveAnnotationsInformationForStudy(studyInstanceUID);

            if (studyAnnotations == null || studyAnnotations.Count == 0)
            {
                return(annotationDictionary);
            }

            using (var reader = DataAccessLayer.GetIDataStoreReader())
            {
                foreach (var studyItem in studyAnnotations)
                {
                    var study = reader.GetStudy(studyItem.StudyInstanceUid) as ClearCanvas.Dicom.DataStore.Study;
                    if (study != null)
                    {
                        var allSeries = study.GetSeries();
                        foreach (var series in allSeries)
                        {
                            if (series != null && series.Modality == "SR")
                            {
                                var sopInstances = series.GetSopInstances();
                                foreach (var sopInstance in sopInstances)
                                {
                                    if (sopInstance != null)
                                    {
                                        var fileUri = sopInstance.GetLocationUri();
                                        if (fileUri.IsFile)
                                        {
                                            annotationDictionary.Add(study.StudyInstanceUid, series.SeriesInstanceUid, sopInstance.SopInstanceUid, fileUri.LocalDiskPath);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(annotationDictionary);
        }