Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | 1x 142x 142x 628x 136x 142x 127x 625x 127x 127x 6x 8x 1846x 9049x 9049x 1800x | // This module defines a way to access various metadata about an imageId. This layer of abstraction exists // So metadata can be provided in different ways (e.g. by parsing DICOM P10 or by a WADO-RS document) const providers = []; /** * Adds a metadata provider with the specified priority * @param provider - Metadata provider function * @param priority - 0 is default/normal, > 0 is high, < 0 is low * * @category MetaData */ export function addProvider( provider: (type: string, query: any) => any, priority = 0 ): void { let i; // Find the right spot to insert this provider based on priority for (i = 0; i < providers.length; i++) { if (providers[i].priority <= priority) { break; } } // Insert the decode task at position i providers.splice(i, 0, { priority, provider, }); } /** * Removes the specified provider * * @param provider - Metadata provider function * * @category MetaData */ export function removeProvider( provider: (type: string, query: any) => { any } ): void { for (let i = 0; i < providers.length; i++) { if (providers[i].provider === provider) { providers.splice(i, 1); break; } } } /** * Removes all providers * * @category MetaData */ export function removeAllProviders(): void { while (providers.length > 0) { providers.pop(); } } /** * Gets metadata from the registered metadata providers. Will call each one from highest priority to lowest * until one responds * * @param type - The type of metadata requested from the metadata store * @param query - The query for the metadata store, often imageId * * @returns The metadata retrieved from the metadata store * @category MetaData */ function getMetaData(type: string, query: string): any { // Invoke each provider in priority order until one returns something for (let i = 0; i < providers.length; i++) { const result = providers[i].provider(type, query); if (result !== undefined) { return result; } } } export { getMetaData as get }; |