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)); } }
public virtual bool DeleteStudy(IStudyId study) { long studyKey = GetStudyKey(DataAdapter, study); return(DataAdapter.CreateDeleteStudyCommand(studyKey).Execute( )); }
public WadoStoreResponse(IStudyId studyId, IRetrieveUrlProvider urlProvider = null) { _dataset = new fo.DicomDataset( ); UrlProvider = urlProvider ?? new RetrieveUrlProvider( ); StudyId = studyId; HttpStatus = HttpStatusCode.Unused; StatusMessage = ""; }
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); }
public virtual IEnumerable <InstanceMetadata> GetStudyMetadata(IStudyId study) { var command = DataAdapter.CreateGetMetadataCommand(study); command.Execute( ); return(command.Result); //return GetInstanceMetadata ( DataAdapter, command ) ; }
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)); }
private void DeleteMediaLocations(IStudyId study) { var studyMeta = DataAccess.GetStudyMetadata(study); if (null != studyMeta) { foreach (var objectMetaRaw in studyMeta) { DeleteMediaLocations(objectMetaRaw); } } }
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))); }
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); }
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."); } }
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 }); }
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))); }
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)); }
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); }
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)); }
public string GetStudyUrl(IStudyId study) { return(GetStudyUrl(study.StudyInstanceUID)); }
public ObjectId(IStudyId study) { StudyInstanceUID = study.StudyInstanceUID; }
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); }
protected virtual IQueryOptions GetQueryOptions(IStudyId studyId) { return(CreateNewQueryOptions()); }
protected virtual WadoStoreResponse CreateWadoStoreResponseModel(IStudyId studyId) { return(new WadoStoreResponse(studyId, _urlProvider)); }
protected virtual IQueryOptions GetQueryOptions(IStudyId studyId, ISeriesId seriesId, IObjectId sopId) { return(CreateNewQueryOptions()); }