Exemplo n.º 1
0
        public virtual async Task <HttpResponseMessage> Store
        (
            WebStoreRequest request,
            IStudyId studyId = null
        )
        {
            GetDicomHandler getDicomDelegate = CreateDatasetParser(request);

            if (null != getDicomDelegate)
            {
                var storeResult = await StoreStudy(request, studyId, getDicomDelegate);

                var result = new HttpResponseMessage(storeResult.HttpStatus);


                if (!string.IsNullOrWhiteSpace(storeResult.StatusMessage))
                {
                    result.ReasonPhrase = storeResult.StatusMessage;
                }

                result.Content = CreateResponseContent(request, storeResult);

                return(result);
            }
            else
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }
        }
Exemplo n.º 2
0
        public virtual bool DeleteStudy(IStudyId study)
        {
            long studyKey = GetStudyKey(DataAdapter, study);


            return(DataAdapter.CreateDeleteStudyCommand(studyKey).Execute( ));
        }
Exemplo n.º 3
0
 public WadoStoreResponse(IStudyId studyId, IRetrieveUrlProvider urlProvider = null)
 {
     _dataset      = new fo.DicomDataset( );
     UrlProvider   = urlProvider ?? new RetrieveUrlProvider( );
     StudyId       = studyId;
     HttpStatus    = HttpStatusCode.Unused;
     StatusMessage = "";
 }
Exemplo n.º 4
0
        protected virtual string CreateOHIFUrl(DicomDataset instance, IStudyId studyId)
        {
            var url = UrlProvier.GetInstanceUrl(DicomObjectIdFactory.Instance.CreateObjectId(instance));

            url = url.Remove(0, url.IndexOf(":") + 1);

            return("dicomweb:" + url);
        }
Exemplo n.º 5
0
        public virtual IEnumerable <InstanceMetadata> GetStudyMetadata(IStudyId study)
        {
            var command = DataAdapter.CreateGetMetadataCommand(study);


            command.Execute( );

            return(command.Result);
            //return GetInstanceMetadata ( DataAdapter, command ) ;
        }
Exemplo n.º 6
0
        public virtual IDataAdapterCommand <long> CreateSelectStudyKeyCommand(IStudyId study)
        {
            TableKey     studyTable   = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            QueryBuilder queryBuilder = CreateQueryBuilder( );

            ProcessSelectStudy(study, queryBuilder, studyTable, studyTable);

            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(studyTable)),
                                                        studyTable.Name,
                                                        studyTable.KeyColumn.Name));
        }
        public virtual IDataAdapterCommand <long> CreateSelectStudyKeyCommand(IStudyId study)
        {
            TableKey            studyTable   = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            QueryBuilder        queryBuilder = CreateQueryBuilder( );
            SingleValueMatching uidMatching  = new SingleValueMatching( );


            queryBuilder.ProcessColumn(studyTable, studyTable.ModelKeyColumns [0], uidMatching, new string[] { study.StudyInstanceUID });

            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(studyTable)),
                                                        studyTable.Name,
                                                        studyTable.KeyColumn.Name));
        }
Exemplo n.º 8
0
        private void DeleteMediaLocations(IStudyId study)
        {
            var studyMeta = DataAccess.GetStudyMetadata(study);


            if (null != studyMeta)
            {
                foreach (var objectMetaRaw in studyMeta)
                {
                    DeleteMediaLocations(objectMetaRaw);
                }
            }
        }
Exemplo n.º 9
0
        protected virtual IEnumerable <DicomDataset> QueryInstances(IStudyId studyId)
        {
            Dicom.DicomDataset ds = new Dicom.DicomDataset();

            ds.Add(Dicom.DicomTag.StudyInstanceUID, studyId.StudyInstanceUID);
            ds.Add(DicomTag.SeriesInstanceUID, "");
            ds.Add(DicomTag.PatientID, "");
            ds.Add(DicomTag.PatientName, "");
            ds.Add(DicomTag.SeriesDescription, "");
            ds.Add(DicomTag.SOPInstanceUID, "");

            return(QueryService.FindObjectInstances(ds, GetQueryOptions(studyId)));
        }
Exemplo n.º 10
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);
        }
Exemplo n.º 11
0
        protected virtual long GetStudyKey(ObjectArchieveDataAdapter adapter, IStudyId study)
        {
            var cmd = adapter.CreateSelectStudyKeyCommand(study);


            if (cmd.Execute( ))
            {
                return(cmd.Result);
            }
            else
            {
                throw new DCloudNotFoundException("study is not found.");
            }
        }
Exemplo n.º 12
0
        protected virtual void ProcessSelectStudy
        (
            IStudyId study,
            QueryBuilder queryBuilder,
            TableKey studyTable,
            TableKey sourceTable
        )
        {
            SingleValueMatching uidMatching = new SingleValueMatching( );


            queryBuilder.ProcessColumn(sourceTable,
                                       studyTable.ModelKeyColumns [0],
                                       uidMatching,
                                       new string[] { study.StudyInstanceUID });
        }
Exemplo n.º 13
0
        protected virtual IEnumerable <DicomDataset> QueryInstances(IStudyId studyId, ISeriesId seriesId, IObjectId sopId)
        {
            DicomDataset ds = new DicomDataset()
            {
                AutoValidate = false
            };

            ds.Add(Dicom.DicomTag.StudyInstanceUID, studyId.StudyInstanceUID);
            ds.Add(DicomTag.SeriesInstanceUID, seriesId.SeriesInstanceUID);
            ds.Add(DicomTag.PatientID, "");
            ds.Add(DicomTag.PatientName, "");
            ds.Add(DicomTag.SeriesDescription, "");
            ds.Add(DicomTag.SOPInstanceUID, sopId.SOPInstanceUID);
            ds.Add(DicomTag.NumberOfFrames, "");

            return(QueryService.FindObjectInstances(ds, GetQueryOptions(studyId, seriesId, sopId)));
        }
Exemplo n.º 14
0
        public ResultSetQueryCommand <InstanceMetadata> CreateGetMetadataCommand(IStudyId study)
        {
            TableKey     studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey     sourceTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder queryBuilder   = CreateQueryBuilder( );
            ColumnInfo   metaDataColumn = SchemaProvider.GetColumn(sourceTable.Name,
                                                                   StorageDbSchemaProvider.MetadataTable.MetadataColumn);

            ProcessSelectStudy(study, queryBuilder, studyTable, sourceTable);

            queryBuilder.ProcessColumn(sourceTable, metaDataColumn, null, null);

            return(new ResultSetQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(sourceTable)),
                                                                 sourceTable,
                                                                 new string [] { metaDataColumn.ToString( ) },
                                                                 CreateMetadata));
        }
        public ResultSetQueryCommand <InstanceMetadata> CreateGetMetadataCommand(IStudyId study)
        {
            TableKey            studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey            sourceTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder        queryBuilder   = CreateQueryBuilder( );
            SingleValueMatching uidMatching    = new SingleValueMatching( );
            ColumnInfo          studyColumne   = studyTable.ModelKeyColumns[0];
            ColumnInfo          metaDataColumn = SchemaProvider.GetColumn(sourceTable.Name,
                                                                          StorageDbSchemaProvider.MetadataTable.MetadataColumn);


            queryBuilder.ProcessColumn(sourceTable, studyColumne, uidMatching, new string[] { study.StudyInstanceUID });

            queryBuilder.ProcessColumn(sourceTable, metaDataColumn, null, null);

            return(new ResultSetQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(sourceTable)),
                                                                 sourceTable,
                                                                 new string [] { metaDataColumn.ToString( ) },
                                                                 CreateMetadata));
        }
Exemplo n.º 16
0
        private async Task <WadoStoreResponse> StoreStudy
        (
            WebStoreRequest request,
            IStudyId studyId,
            GetDicomHandler getDicom
        )
        {
            WadoStoreResponse response = CreateWadoStoreResponseModel(studyId);

            foreach (var mediaContent in request.Contents)
            {
                Stream dicomStream = await mediaContent.ReadAsStreamAsync();

                var dicomDs = getDicom(dicomStream);


                PublisherSubscriberFactory.Instance.Publish(this,
                                                            new WebStoreDatasetProcessingMessage(request, dicomDs));

                try
                {
                    var result = _storageService.StoreDicom(dicomDs, CreateObjectMetadata(dicomDs, request));


                    response.AddResult(dicomDs);

                    PublisherSubscriberFactory.Instance.Publish(this,
                                                                new WebStoreDatasetProcessedMessage(request, dicomDs));
                }
                catch (Exception ex)
                {
                    response.AddResult(dicomDs, ex);

                    PublisherSubscriberFactory.Instance.Publish(this,
                                                                new WebStoreDatasetProcessingFailureMessage(request, dicomDs, ex));
                }
            }

            return(response);
        }
Exemplo n.º 17
0
        public async Task <HttpResponseMessage> Post(string studyInstanceUID = null)
        {
            WebStoreRequest webStoreRequest = new WebStoreRequest(Request);
            IStudyId        studyId         = null;


            if (!string.IsNullOrWhiteSpace(studyInstanceUID))
            {
                studyId = new ObjectId( )
                {
                    StudyInstanceUID = studyInstanceUID
                };
            }

            if (!Request.Content.IsMimeMultipartContent("related"))
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            await Request.Content.ReadAsMultipartAsync(webStoreRequest);

            return(await StorageService.Store(webStoreRequest, studyId));
        }
Exemplo n.º 18
0
 public string GetStudyUrl(IStudyId study)
 {
     return(GetStudyUrl(study.StudyInstanceUID));
 }
Exemplo n.º 19
0
 public ObjectId(IStudyId study)
 {
     StudyInstanceUID = study.StudyInstanceUID;
 }
Exemplo n.º 20
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);
        }
Exemplo n.º 21
0
 protected virtual IQueryOptions GetQueryOptions(IStudyId studyId)
 {
     return(CreateNewQueryOptions());
 }
Exemplo n.º 22
0
 protected virtual WadoStoreResponse CreateWadoStoreResponseModel(IStudyId studyId)
 {
     return(new WadoStoreResponse(studyId, _urlProvider));
 }
Exemplo n.º 23
0
 protected virtual IQueryOptions GetQueryOptions(IStudyId studyId, ISeriesId seriesId, IObjectId sopId)
 {
     return(CreateNewQueryOptions());
 }