UNPKG

dicomweb-client

Version:
611 lines 23.1 kB
export default DICOMwebClient; export type Request = { /** * - If specified, the request to use, otherwise one will be created. */ instance?: XMLHttpRequest; /** * - A callback function to handle progress events. */ progressCallback?: (arg0: ProgressEvent) => void; /** * - The response type of the request. */ responseType?: string; /** * - Whether to include credentials in the request. */ withCredentials?: boolean; }; export type InstanceMetadata = import("../types/types").InstanceMetadata; /** * A callback with the request instance and metadata information * of the currently request being executed that should necessarily * return the given request optionally modified. */ export type RequestHook = Function; /** * @typedef { import("../types/types").InstanceMetadata } InstanceMetadata */ /** * A callback with the request instance and metadata information * of the currently request being executed that should necessarily * return the given request optionally modified. * @typedef {function} RequestHook * @param {XMLHttpRequest} request - The original XMLHttpRequest instance. * @param {object} metadata - The metadata used by the request. */ /** * Class for interacting with DICOMweb RESTful services. */ export class DICOMwebClient { static _parseQueryParameters(params?: {}): string; /** * Asserts that a given media type is valid. * * @params {String} mediaType media type */ static _assertMediaTypeIsValid(mediaType: any): void; /** * Parses media type and extracts its type and subtype. * * @param {String} mediaType - HTTP media type (e.g. image/jpeg) * @private * @returns {String[]} Media type and subtype */ private static _parseMediaType; /** * Builds an accept header field value for HTTP GET request messages. * * @param {Object[]} mediaTypes - Acceptable media types * @param {Object[]} supportedMediaTypes - Supported media types * @return {*} * @private */ private static _buildAcceptHeaderFieldValue; /** * Builds an accept header field value for HTTP GET multipart request * messages. Will throw an exception if no media types are found which are acceptable, * but will only log a verbose level message when types are specified which are * not acceptable. This allows requesting several types with having to know * whether they are all acceptable or not. * * @param {Object[]} mediaTypes - Acceptable media types * @param {Object[]} supportedMediaTypes - Supported media types * @private */ private static _buildMultipartAcceptHeaderFieldValue; /** * Builds a range header field value for HTTP GET request messages. * * @param {Array} byteRange - Start and end of byte range * @returns {String} Range header field value * @private */ private static _buildRangeHeaderFieldValue; /** * Gets types that are shared among acceptable media types. * * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the corresponding transfer syntaxes * @private * @returns {String[]} Types that are shared among acceptable media types */ private static _getSharedMediaTypes; /** * Gets common base type of acceptable media types and asserts that only one type is specified. For example, ``("image/jpeg", "image/jp2")`` will pass, but ``("image/jpeg", "video/mpeg2")`` will raise an exception. * * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the corresponding transfer syntaxes * @private * @returns {String[]} Common media type, eg `image/` for the above example. */ private static _getCommonMediaType; /** * @constructor * @param {Object} options * @param {String} options.url - URL of the DICOMweb RESTful Service endpoint * @param {String=} options.qidoURLPrefix - URL path prefix for QIDO-RS * @param {String=} options.wadoURLPrefix - URL path prefix for WADO-RS * @param {String=} options.stowURLPrefix - URL path prefix for STOW-RS * @param {String=} options.username - Username * @param {String=} options.password - Password * @param {Object=} options.headers - HTTP headers * @param {Array.<RequestHook>=} options.requestHooks - Request hooks. * @param {Object=} options.verbose - print to console request warnings and errors, default true * @param {Object=} options.debug - print to the console debug level information/status updates. * @param {boolean|String} options.singlepart - retrieve singlepart for the named types. * The available types are: bulkdata, video, image. true means all. */ constructor(options: { url: string; qidoURLPrefix?: string | undefined; wadoURLPrefix?: string | undefined; stowURLPrefix?: string | undefined; username?: string | undefined; password?: string | undefined; headers?: any | undefined; requestHooks?: Array<RequestHook> | undefined; verbose?: any | undefined; debug?: any | undefined; singlepart: boolean | string; }); baseURL: string; username: string; password: string; qidoURL: string; wadoURL: string; stowURL: string; singlepart: string; requestHooks: Function[]; headers: any; errorInterceptor: any; verbose: boolean; /** * Allows setting the debug log information. * Note this is different from verbose in that verbose is whether to include warning/error information, defaulting to true * * @param {boolean} debugLevel * @param {function} debugLogFunction to call with the debug output arguments. */ setDebug(debugLevel?: boolean, debugLogFunction?: Function): void; debugLevel: boolean; /** * Gets debug flag * * @returns true if debug logging is enabled */ getDebug(): boolean; /** * Sets verbose flag. * * @param {Boolean} verbose */ setVerbose(verbose: boolean): void; /** * Gets verbose flag. * * @return {Boolean} verbose */ getVerbose(): boolean; /** * Performs an HTTP request. * * @param {String} url * @param {String} method * @param {Object} headers * @param {Request} [request] - Request Options * @param {Array} [request.data] - Data that should be stored * @return {*} * @private */ private _httpRequest; /** * Performs an HTTP GET request. * * @param {String} url * @param {Object} headers * @param {Request} request - Request Options * @return {*} * @private */ private _httpGet; /** * Performs an HTTP GET request that accepts a message with application/json * media type. * * @param {String} url * @param {Object} params * @param {Request} request - Request Options * @return {*} * @private */ private _httpGetApplicationJson; /** * Performs an HTTP GET request that accepts a message with application/pdf * media type. * * @param {String} url * @param {Object} params * @param {Request} request - Request Options * @return {*} * @private */ private _httpGetApplicationPdf; /** * Performs an HTTP GET request that accepts a message with an image media type. * * @param {String} url * @param {Object[]} mediaTypes * @param {Object} params * @param {Request} request - Request Options * @return {*} * @private */ private _httpGetImage; /** * Performs an HTTP GET request that accepts a message with a text media type. * * @param {String} url * @param {Object[]} mediaTypes * @param {Object} params * @param {Request} request - Request Options * @return {*} * @private */ private _httpGetText; /** * Performs an HTTP GET request that accepts a message with a video media type. * * @param {String} url * @param {Object[]} mediaTypes * @param {Object} params * @param {Request} request - Request Options * @return {*} * @private */ private _httpGetVideo; /** * Performs an HTTP GET request that accepts a multipart message with an image media type. * * @param {String} url - Unique resource locator * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the corresponding transfer syntaxes * @param {Array} byteRange - Start and end of byte range * @param {Object} params - Additional HTTP GET query parameters * @param {Boolean} rendered - Whether resource should be requested using rendered media types * @param {Request} request - Request Options * @private * @returns {Promise<Array>} Content of HTTP message body parts */ private _httpGetMultipartImage; /** * Performs an HTTP GET request that accepts a multipart message with a video media type. * * @param {String} url - Unique resource locator * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the corresponding transfer syntaxes * @param {Array} byteRange - Start and end of byte range * @param {Object} params - Additional HTTP GET query parameters * @param {Boolean} rendered - Whether resource should be requested using rendered media types * @param {Request} request - Request Options * @private * @returns {Promise<Array>} Content of HTTP message body parts */ private _httpGetMultipartVideo; /** * Performs an HTTP GET request that accepts a multipart message * with a application/dicom media type. * * @param {String} url - Unique resource locator * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the corresponding transfer syntaxes * @param {Object} params - Additional HTTP GET query parameters * @param {Request} request - request options * @private * @returns {Promise<Array>} Content of HTTP message body parts */ private _httpGetMultipartApplicationDicom; /** * Performs an HTTP GET request that accepts a multipart message * with a application/octet-stream, OR any of the equivalencies for that (eg * application/pdf etc) * * @param {String} url - Unique resource locator * @param {Object[]} mediaTypes - Acceptable media types and optionally the UIDs of the corresponding transfer syntaxes * @param {Array} byteRange start and end of byte range * @param {Object} params - Additional HTTP GET query parameters * @param {Request} request - Request Options * @private * @returns {Promise<Array>} Content of HTTP message body parts */ private _httpGetMultipartApplicationOctetStream; /** * Performs an HTTP POST request. * * @param {String} url - Unique resource locator * @param {Object} headers - HTTP header fields * @param {Array} data - Data that should be stored * @param {Request} request - Request Options * @private * @returns {Promise} Response */ private _httpPost; /** * Performs an HTTP POST request with content-type application/dicom+json. * * @param {String} url - Unique resource locator * @param {Object} headers - HTTP header fields * @param {Array} data - Data that should be stored * @param {Request} request - Request Options * @private * @returns {Promise} Response */ private _httpPostApplicationJson; /** * Searches for DICOM studies. * * @param {Object} options * @param {Object} [options.queryParams] - HTTP query parameters * @param {Request} request - Request Options * @return {Object[]} Study representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2) */ searchForStudies(options?: { queryParams?: any; }): any[]; /** * Retrieves metadata for a DICOM study. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {Request} options.request - Request Options * @returns {Promise<InstanceMetadata[]>} Metadata elements in DICOM JSON format for each instance belonging to the study */ retrieveStudyMetadata(options: { studyInstanceUID: string; request: Request; }): Promise<InstanceMetadata[]>; /** * Searches for DICOM series. * * @param {Object} options * @param {String} [options.studyInstanceUID] - Study Instance UID * @param {Object} [options.queryParams] - HTTP query parameters * @param {Request} request - Request Options * @returns {Object[]} Series representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2a) */ searchForSeries(options?: { studyInstanceUID?: string; queryParams?: any; }): any[]; /** * Retrieves metadata for a DICOM series. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {Request} options.request - Request Options * @returns {Promise<InstanceMetadata[]>} Metadata elements in DICOM JSON format for each instance belonging to the series */ retrieveSeriesMetadata(options: { studyInstanceUID: string; seriesInstanceUID: string; request: Request; }): Promise<InstanceMetadata[]>; /** * Searches for DICOM Instances. * * @param {Object} options * @param {String} [options.studyInstanceUID] - Study Instance UID * @param {String} [options.seriesInstanceUID] - Series Instance UID * @param {Object} [options.queryParams] - HTTP query parameters * @param {Request} [options.request] - Request Options * @returns {Object[]} Instance representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2b) */ searchForInstances(options?: { studyInstanceUID?: string; seriesInstanceUID?: string; queryParams?: any; request?: Request; }): any[]; /** Returns a WADO-URI URL for an instance * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @returns {String} WADO-URI URL */ buildInstanceWadoURIUrl(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; }): string; /** * Retrieves metadata for a DICOM Instance. * * @param {Object} options object * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @param {Request} request - Request Options * @returns {Promise<InstanceMetadata>} metadata elements in DICOM JSON format */ retrieveInstanceMetadata(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; }): Promise<InstanceMetadata>; /** * Retrieves frames for a DICOM Instance. * @param {Object} options options object * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @param {String} options.frameNumbers - One-based indices of Frame Items * @param {Request} options.request - Request Options * @returns {Array} frame items as byte arrays of the pixel data element */ retrieveInstanceFrames(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; frameNumbers: string; request: Request; }): any[]; /** * Element in mediaTypes parameter * @typedef {Object} MediaType * @param {String} [MediaType.mediaType] - ie 'image/jpeg', 'image/png'... */ /** * Retrieves an individual, server-side rendered DICOM Instance. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @param {MediaType[]} [options.mediaTypes] - Acceptable HTTP media types * @param {Object} [options.queryParams] - HTTP query parameters * @param {Request} [options.request] - Request Options - Request Options * @returns {Promise<ArrayBuffer>} Rendered DICOM Instance */ retrieveInstanceRendered(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; mediaTypes?: any[]; queryParams?: any; request?: Request; }): Promise<ArrayBuffer>; /** * Retrieves a thumbnail of an DICOM Instance. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @param {MediaType[]} [options.mediaTypes] - Acceptable HTTP media types * @param {Object} [options.queryParams] - HTTP query parameters * @param {Request} [options.request] - Request Options - Request Options * @returns {ArrayBuffer} Thumbnail */ retrieveInstanceThumbnail(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; mediaTypes?: any[]; queryParams?: any; request?: Request; }): ArrayBuffer; /** * Retrieves rendered frames for a DICOM Instance. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @param {String} options.frameNumbers - One-based indices of Frame Items * @param {MediaType[]} [options.mediaTypes] - Acceptable HTTP media types * @param {Object} [options.queryParams] - HTTP query parameters * @param {Request} [options.request] - Request Options - Request Options * @returns {ArrayBuffer[]} Rendered Frame Items as byte arrays */ retrieveInstanceFramesRendered(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; frameNumbers: string; mediaTypes?: any[]; queryParams?: any; request?: Request; }): ArrayBuffer[]; /** * Retrieves thumbnail of frames for a DICOM Instance. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @param {String} options.frameNumbers - One-based indices of Frame Items * @param {Object} [options.queryParams] - HTTP query parameters * @param {Request} [options.request] - Request Options - Request Options * @returns {ArrayBuffer[]} Rendered Frame Items as byte arrays */ retrieveInstanceFramesThumbnail(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; frameNumbers: string; queryParams?: any; request?: Request; }): ArrayBuffer[]; /** * Retrieves a DICOM Instance. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {String} options.sopInstanceUID - SOP Instance UID * @param {string[]} options.mediaTypes * @param {Request} options.request - Request Options * @returns {Promise<ArrayBuffer>} DICOM Part 10 file as Arraybuffer */ retrieveInstance(options: { studyInstanceUID: string; seriesInstanceUID: string; sopInstanceUID: string; mediaTypes: string[]; request: Request; }): Promise<ArrayBuffer>; /** * Retrieves all DICOM Instances of a Series. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {String} options.seriesInstanceUID - Series Instance UID * @param {Request} options.request - Request Options * @returns {Promise<ArrayBuffer[]>} DICOM Instances */ retrieveSeries(options: { studyInstanceUID: string; seriesInstanceUID: string; request: Request; }): Promise<ArrayBuffer[]>; /** * Retrieves all DICOM Instances of a Study. * * @param {Object} options * @param {String} options.studyInstanceUID - Study Instance UID * @param {Request} options.request - Request Options * @returns {ArrayBuffer[]} DICOM Instances */ retrieveStudy(options: { studyInstanceUID: string; request: Request; }): ArrayBuffer[]; /** * Retrieves and parses BulkData from a BulkDataURI location. * Decodes the multipart encoded data and returns the resulting data * as an ArrayBuffer. * * See http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.5.5.html * * @param {Object} options * @param {string} options.BulkDataURI to retrieve * @param {Array} options.mediaTypes to use to fetch the URI * @param {string} options.byteRange to request a sub-range (only valid on single part) * @param {Request} options.request - Request Options * @returns {Promise<Array>} Bulkdata parts */ retrieveBulkData(options: { BulkDataURI: string; mediaTypes: any[]; byteRange: string; request: Request; }): Promise<any[]>; /** * Stores DICOM Instances. * * @param {Object} options * @param {ArrayBuffer[]} options.datasets - DICOM Instances in PS3.10 format * @param {String} [options.studyInstanceUID] - Study Instance UID * @param {Request} [options.request] - Request Options * @returns {Promise} Response message */ storeInstances(options: { datasets: ArrayBuffer[]; studyInstanceUID?: string; request?: Request; }): Promise<any>; } //# sourceMappingURL=api.d.ts.map