예제 #1
0
        protected virtual OHIFViewerModel GetOHIFModel(IEnumerable <DicomDataset> instances, IStudyId studyId)
        {
            Dictionary <string, OHIFStudy>  studies = new Dictionary <string, OHIFStudy>();
            Dictionary <string, OHIFSeries> series  = new Dictionary <string, OHIFSeries>();
            OHIFViewerModel result = new OHIFViewerModel();


            result.TransactionId = Guid.NewGuid().ToString();

            foreach (var instance in instances)
            {
                var          currentStudyUid    = instance.Get <string>(DicomTag.StudyInstanceUID);
                var          currentSeriesUid   = instance.Get <string>(DicomTag.SeriesInstanceUID);
                var          currentInstanceUid = instance.Get <string>(DicomTag.SOPInstanceUID);
                OHIFInstance ohifInstance       = new OHIFInstance()
                {
                    SopInstanceUid = currentInstanceUid
                };
                OHIFStudy  ohifStudy;
                OHIFSeries ohifSeries;


                if (!studies.TryGetValue(currentStudyUid, out ohifStudy))
                {
                    ohifStudy = new OHIFStudy()
                    {
                        StudyInstanceUid = currentStudyUid
                    };

                    ohifStudy.PatientName = instance.Get <string>(DicomTag.PatientName, "");

                    result.Studies.Add(ohifStudy);

                    studies.Add(currentStudyUid, ohifStudy);
                }

                if (!series.TryGetValue(currentSeriesUid, out ohifSeries))
                {
                    ohifSeries = new OHIFSeries()
                    {
                        SeriesInstanceUid = currentSeriesUid
                    };

                    ohifSeries.SeriesDescription = instance.Get <string>(DicomTag.SeriesDescription, "");

                    ohifStudy.SeriesList.Add(ohifSeries);

                    series.Add(currentSeriesUid, ohifSeries);
                }

                ohifInstance.Rows           = 1;
                ohifInstance.Url            = CreateOHIFUrl(instance, studyId);
                ohifInstance.NumberOfFrames = instance.Get <int?>(DicomTag.NumberOfFrames, null);

                ohifSeries.Instances.Add(ohifInstance);
            }

            return(result);
        }
예제 #2
0
        public HttpResponseMessage GetStudies(IStudyId studyId)

        {
            IEnumerable <DicomDataset> instances = QueryInstances(studyId);

            OHIFViewerModel result = GetOHIFModel(instances, studyId);

            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(result.ToJson(true));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            return(response);
        }