Mercurial > hg > orthanc-java
view JavaSDK/be/uclouvain/orthanc/Functions.java @ 2:76114d03e318
fix legacy
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 18 Oct 2023 18:54:12 +0200 |
parents | 3ecef5782f2c |
children | 26c08ff926a3 |
line wrap: on
line source
package be.uclouvain.orthanc; /** * SPDX-FileCopyrightText: 2023 Sebastien Jodogne, UCLouvain, Belgium * SPDX-License-Identifier: GPL-3.0-or-later */ /** * Java plugin for Orthanc * Copyright (C) 2023 Sebastien Jodogne, UCLouvain, Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. **/ /** * Wrapper around the global functions provided by the Orthanc SDK. **/ public class Functions { /** * Check that the version of the hosting Orthanc is above a given version. * * This function checks whether the version of the Orthanc server running this * plugin, is above the given version. Contrarily to OrthancPluginCheckVersion(), * it is up to the developer of the plugin to make sure that all the Orthanc SDK * services called by the plugin are actually implemented in the given version of * Orthanc. * * @param expectedMajor Expected major version. * @param expectedMinor Expected minor version. * @param expectedRevision Expected revision. * @return 1 if and only if the versions are compatible. If the result is 0, the * initialization of the plugin should fail. **/ public static int checkVersionAdvanced( int expectedMajor, int expectedMinor, int expectedRevision) { return NativeSDK.OrthancPluginCheckVersionAdvanced(expectedMajor, expectedMinor, expectedRevision); } /** * Check the compatibility of the plugin wrt. the version of its hosting Orthanc. * * This function checks whether the version of the Orthanc server running this * plugin, is above the version of the current Orthanc SDK header. This guarantees * that the plugin is compatible with the hosting Orthanc (i.e. it will not call * unavailable services). The result of this function should always be checked in * the OrthancPluginInitialize() entry point of the plugin. * * @return 1 if and only if the versions are compatible. If the result is 0, the * initialization of the plugin should fail. **/ public static int checkVersion() { return NativeSDK.OrthancPluginCheckVersion(); } /** * Log an error. * * Log an error message using the Orthanc logging system. * * @param message The message to be logged. **/ public static void logError( String message) { NativeSDK.OrthancPluginLogError(message); } /** * Log a warning. * * Log a warning message using the Orthanc logging system. * * @param message The message to be logged. **/ public static void logWarning( String message) { NativeSDK.OrthancPluginLogWarning(message); } /** * Log an information. * * Log an information message using the Orthanc logging system. * * @param message The message to be logged. **/ public static void logInfo( String message) { NativeSDK.OrthancPluginLogInfo(message); } /** * Retrieve a DICOM instance using its Orthanc identifier. * * Retrieve a DICOM instance using its Orthanc identifier. The DICOM file is stored * into a newly allocated memory buffer. * * @param instanceId The Orthanc identifier of the DICOM instance of interest. * @return The resulting memory buffer. **/ public static byte[] getDicomForInstance( String instanceId) { return NativeSDK.OrthancPluginGetDicomForInstance(instanceId); } /** * Make a GET call to the built-in Orthanc REST API. * * Make a GET call to the built-in Orthanc REST API. The result to the query is * stored into a newly allocated memory buffer. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI in the built-in Orthanc API. * @return The resulting memory buffer. **/ public static byte[] restApiGet( String uri) { return NativeSDK.OrthancPluginRestApiGet(uri); } /** * Make a GET call to the REST API, as tainted by the plugins. * * Make a GET call to the Orthanc REST API, after all the plugins are applied. In * other words, if some plugin overrides or adds the called URI to the built-in * Orthanc REST API, this call will return the result provided by this plugin. The * result to the query is stored into a newly allocated memory buffer. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI in the built-in Orthanc API. * @return The resulting memory buffer. **/ public static byte[] restApiGetAfterPlugins( String uri) { return NativeSDK.OrthancPluginRestApiGetAfterPlugins(uri); } /** * Make a POST call to the built-in Orthanc REST API. * * Make a POST call to the built-in Orthanc REST API. The result to the query is * stored into a newly allocated memory buffer. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI in the built-in Orthanc API. * @param body The body of the POST request. * @return The resulting memory buffer. **/ public static byte[] restApiPost( String uri, byte[] body) { return NativeSDK.OrthancPluginRestApiPost(uri, body); } /** * Make a POST call to the REST API, as tainted by the plugins. * * Make a POST call to the Orthanc REST API, after all the plugins are applied. In * other words, if some plugin overrides or adds the called URI to the built-in * Orthanc REST API, this call will return the result provided by this plugin. The * result to the query is stored into a newly allocated memory buffer. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI in the built-in Orthanc API. * @param body The body of the POST request. * @return The resulting memory buffer. **/ public static byte[] restApiPostAfterPlugins( String uri, byte[] body) { return NativeSDK.OrthancPluginRestApiPostAfterPlugins(uri, body); } /** * Make a DELETE call to the built-in Orthanc REST API. * * Make a DELETE call to the built-in Orthanc REST API. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI to delete in the built-in Orthanc API. **/ public static void restApiDelete( String uri) { NativeSDK.OrthancPluginRestApiDelete(uri); } /** * Make a DELETE call to the REST API, as tainted by the plugins. * * Make a DELETE call to the Orthanc REST API, after all the plugins are applied. * In other words, if some plugin overrides or adds the called URI to the built-in * Orthanc REST API, this call will return the result provided by this plugin. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI to delete in the built-in Orthanc API. **/ public static void restApiDeleteAfterPlugins( String uri) { NativeSDK.OrthancPluginRestApiDeleteAfterPlugins(uri); } /** * Make a PUT call to the built-in Orthanc REST API. * * Make a PUT call to the built-in Orthanc REST API. The result to the query is * stored into a newly allocated memory buffer. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI in the built-in Orthanc API. * @param body The body of the PUT request. * @return The resulting memory buffer. **/ public static byte[] restApiPut( String uri, byte[] body) { return NativeSDK.OrthancPluginRestApiPut(uri, body); } /** * Make a PUT call to the REST API, as tainted by the plugins. * * Make a PUT call to the Orthanc REST API, after all the plugins are applied. In * other words, if some plugin overrides or adds the called URI to the built-in * Orthanc REST API, this call will return the result provided by this plugin. The * result to the query is stored into a newly allocated memory buffer. * * Remark: If the resource is not existing (error 404), the error code will be * OrthancPluginErrorCode_UnknownResource. * * @param uri The URI in the built-in Orthanc API. * @param body The body of the PUT request. * @return The resulting memory buffer. **/ public static byte[] restApiPutAfterPlugins( String uri, byte[] body) { return NativeSDK.OrthancPluginRestApiPutAfterPlugins(uri, body); } /** * Look for a patient. * * Look for a patient stored in Orthanc, using its Patient ID tag (0x0010, 0x0020). * This function uses the database index to run as fast as possible (it does not * loop over all the stored patients). * * @param patientID The Patient ID of interest. * @return The resulting string. **/ public static String lookupPatient( String patientID) { return NativeSDK.OrthancPluginLookupPatient(patientID); } /** * Look for a study. * * Look for a study stored in Orthanc, using its Study Instance UID tag (0x0020, * 0x000d). This function uses the database index to run as fast as possible (it * does not loop over all the stored studies). * * @param studyUID The Study Instance UID of interest. * @return The resulting string. **/ public static String lookupStudy( String studyUID) { return NativeSDK.OrthancPluginLookupStudy(studyUID); } /** * Look for a study, using the accession number. * * Look for a study stored in Orthanc, using its Accession Number tag (0x0008, * 0x0050). This function uses the database index to run as fast as possible (it * does not loop over all the stored studies). * * @param accessionNumber The Accession Number of interest. * @return The resulting string. **/ public static String lookupStudyWithAccessionNumber( String accessionNumber) { return NativeSDK.OrthancPluginLookupStudyWithAccessionNumber(accessionNumber); } /** * Look for a series. * * Look for a series stored in Orthanc, using its Series Instance UID tag (0x0020, * 0x000e). This function uses the database index to run as fast as possible (it * does not loop over all the stored series). * * @param seriesUID The Series Instance UID of interest. * @return The resulting string. **/ public static String lookupSeries( String seriesUID) { return NativeSDK.OrthancPluginLookupSeries(seriesUID); } /** * Look for an instance. * * Look for an instance stored in Orthanc, using its SOP Instance UID tag (0x0008, * 0x0018). This function uses the database index to run as fast as possible (it * does not loop over all the stored instances). * * @param sopInstanceUID The SOP Instance UID of interest. * @return The resulting string. **/ public static String lookupInstance( String sopInstanceUID) { return NativeSDK.OrthancPluginLookupInstance(sopInstanceUID); } /** * Return the path to the Orthanc executable. * * This function returns the path to the Orthanc executable. * * @return The resulting string. **/ public static String getOrthancPath() { return NativeSDK.OrthancPluginGetOrthancPath(); } /** * Return the directory containing the Orthanc. * * This function returns the path to the directory containing the Orthanc * executable. * * @return The resulting string. **/ public static String getOrthancDirectory() { return NativeSDK.OrthancPluginGetOrthancDirectory(); } /** * Return the path to the configuration file(s). * * This function returns the path to the configuration file(s) that was specified * when starting Orthanc. Since version 0.9.1, this path can refer to a folder that * stores a set of configuration files. This function is deprecated in favor of * OrthancPluginGetConfiguration(). * * @return The resulting string. **/ public static String getConfigurationPath() { return NativeSDK.OrthancPluginGetConfigurationPath(); } /** * Set the URI where the plugin provides its Web interface. * * For plugins that come with a Web interface, this function declares the entry * path where to find this interface. This information is notably used in the * "Plugins" page of Orthanc Explorer. * * @param uri The root URI for this plugin. **/ public static void setRootUri( String uri) { NativeSDK.OrthancPluginSetRootUri(uri); } /** * Set a description for this plugin. * * Set a description for this plugin. It is displayed in the "Plugins" page of * Orthanc Explorer. * * @param description The description. **/ public static void setDescription( String description) { NativeSDK.OrthancPluginSetDescription(description); } /** * Extend the JavaScript code of Orthanc Explorer. * * Add JavaScript code to customize the default behavior of Orthanc Explorer. This * can for instance be used to add new buttons. * * @param javascript The custom JavaScript code. **/ public static void extendOrthancExplorer( String javascript) { NativeSDK.OrthancPluginExtendOrthancExplorer(javascript); } /** * Get the value of a global property. * * Get the value of a global property that is stored in the Orthanc database. * Global properties whose index is below 1024 are reserved by Orthanc. * * @param property The global property of interest. * @param defaultValue The value to return, if the global property is unset. * @return The resulting string. **/ public static String getGlobalProperty( int property, String defaultValue) { return NativeSDK.OrthancPluginGetGlobalProperty(property, defaultValue); } /** * Set the value of a global property. * * Set the value of a global property into the Orthanc database. Setting a global * property can be used by plugins to save their internal parameters. Plugins are * only allowed to set properties whose index are above or equal to 1024 * (properties below 1024 are read-only and reserved by Orthanc). * * @param property The global property of interest. * @param value The value to be set in the global property. **/ public static void setGlobalProperty( int property, String value) { NativeSDK.OrthancPluginSetGlobalProperty(property, value); } /** * Get the number of command-line arguments. * * Retrieve the number of command-line arguments that were used to launch Orthanc. * * @return The number of arguments. **/ public static int getCommandLineArgumentsCount() { return NativeSDK.OrthancPluginGetCommandLineArgumentsCount(); } /** * Get the value of a command-line argument. * * Get the value of one of the command-line arguments that were used to launch * Orthanc. The number of available arguments can be retrieved by * OrthancPluginGetCommandLineArgumentsCount(). * * @param argument The index of the argument. * @return The resulting string. **/ public static String getCommandLineArgument( int argument) { return NativeSDK.OrthancPluginGetCommandLineArgument(argument); } /** * Get the expected version of the database schema. * * Retrieve the expected version of the database schema. * * @return The version. **/ public static int getExpectedDatabaseVersion() { return NativeSDK.OrthancPluginGetExpectedDatabaseVersion(); } /** * Return the content of the configuration file(s). * * This function returns the content of the configuration that is used by Orthanc, * formatted as a JSON string. * * @return The resulting string. **/ public static String getConfiguration() { return NativeSDK.OrthancPluginGetConfiguration(); } /** * Compress or decompress a buffer. * * This function compresses or decompresses a buffer, using the version of the zlib * library that is used by the Orthanc core. * * @param source The source buffer. * @param compression The compression algorithm. * @param uncompress If set to "0", the buffer must be compressed. If set to "1", * the buffer must be uncompressed. * @return The resulting memory buffer. **/ public static byte[] bufferCompression( byte[] source, CompressionType compression, byte uncompress) { return NativeSDK.OrthancPluginBufferCompression(source, compression.getValue(), uncompress); } /** * Read a file. * * Read the content of a file on the filesystem, and returns it into a newly * allocated memory buffer. * * @param path The path of the file to be read. * @return The resulting memory buffer. **/ public static byte[] readFile( String path) { return NativeSDK.OrthancPluginReadFile(path); } /** * Write a file. * * Write the content of a memory buffer to the filesystem. * * @param path The path of the file to be written. * @param data The content of the memory buffer. **/ public static void writeFile( String path, byte[] data) { NativeSDK.OrthancPluginWriteFile(path, data); } /** * Get the description of a given error code. * * This function returns the description of a given error code. * * @param error The error code of interest. * @return The resulting string. **/ public static String getErrorDescription( ErrorCode error) { return NativeSDK.OrthancPluginGetErrorDescription(error.getValue()); } /** * Encode a PNG image. * * This function compresses the given memory buffer containing an image using the * PNG specification, and stores the result of the compression into a newly * allocated memory buffer. * * @param format The memory layout of the uncompressed image. * @param width The width of the image. * @param height The height of the image. * @param pitch The pitch of the image (i.e. the number of bytes between 2 * successive lines of the image in the memory buffer). * @param buffer The memory buffer containing the uncompressed image. * @return The resulting memory buffer. **/ public static byte[] compressPngImage( PixelFormat format, int width, int height, int pitch, byte[] buffer) { return NativeSDK.OrthancPluginCompressPngImage(format.getValue(), width, height, pitch, buffer); } /** * Encode a JPEG image. * * This function compresses the given memory buffer containing an image using the * JPEG specification, and stores the result of the compression into a newly * allocated memory buffer. * * @param format The memory layout of the uncompressed image. * @param width The width of the image. * @param height The height of the image. * @param pitch The pitch of the image (i.e. the number of bytes between 2 * successive lines of the image in the memory buffer). * @param buffer The memory buffer containing the uncompressed image. * @param quality The quality of the JPEG encoding, between 1 (worst quality, best * compression) and 100 (best quality, worst compression). * @return The resulting memory buffer. **/ public static byte[] compressJpegImage( PixelFormat format, int width, int height, int pitch, byte[] buffer, byte quality) { return NativeSDK.OrthancPluginCompressJpegImage(format.getValue(), width, height, pitch, buffer, quality); } /** * Issue a HTTP GET call. * * Make a HTTP GET call to the given URL. The result to the query is stored into a * newly allocated memory buffer. Favor OrthancPluginRestApiGet() if calling the * built-in REST API of the Orthanc instance that hosts this plugin. * * @param url The URL of interest. * @param username The username (can be "NULL" if no password protection). * @param password The password (can be "NULL" if no password protection). * @return The resulting memory buffer. **/ public static byte[] httpGet( String url, String username, String password) { return NativeSDK.OrthancPluginHttpGet(url, username, password); } /** * Issue a HTTP POST call. * * Make a HTTP POST call to the given URL. The result to the query is stored into a * newly allocated memory buffer. Favor OrthancPluginRestApiPost() if calling the * built-in REST API of the Orthanc instance that hosts this plugin. * * @param url The URL of interest. * @param body The content of the body of the request. * @param username The username (can be "NULL" if no password protection). * @param password The password (can be "NULL" if no password protection). * @return The resulting memory buffer. **/ public static byte[] httpPost( String url, byte[] body, String username, String password) { return NativeSDK.OrthancPluginHttpPost(url, body, username, password); } /** * Issue a HTTP PUT call. * * Make a HTTP PUT call to the given URL. The result to the query is stored into a * newly allocated memory buffer. Favor OrthancPluginRestApiPut() if calling the * built-in REST API of the Orthanc instance that hosts this plugin. * * @param url The URL of interest. * @param body The content of the body of the request. * @param username The username (can be "NULL" if no password protection). * @param password The password (can be "NULL" if no password protection). * @return The resulting memory buffer. **/ public static byte[] httpPut( String url, byte[] body, String username, String password) { return NativeSDK.OrthancPluginHttpPut(url, body, username, password); } /** * Issue a HTTP DELETE call. * * Make a HTTP DELETE call to the given URL. Favor OrthancPluginRestApiDelete() if * calling the built-in REST API of the Orthanc instance that hosts this plugin. * * @param url The URL of interest. * @param username The username (can be "NULL" if no password protection). * @param password The password (can be "NULL" if no password protection). **/ public static void httpDelete( String url, String username, String password) { NativeSDK.OrthancPluginHttpDelete(url, username, password); } /** * Return the number of available fonts. * * This function returns the number of fonts that are built in the Orthanc core. * These fonts can be used to draw texts on images through OrthancPluginDrawText(). * * @return The number of fonts. **/ public static int getFontsCount() { return NativeSDK.OrthancPluginGetFontsCount(); } /** * Return the name of a font. * * This function returns the name of a font that is built in the Orthanc core. * * @param fontIndex The index of the font. This value must be less than * OrthancPluginGetFontsCount(). * @return The resulting string. **/ public static String getFontName( int fontIndex) { return NativeSDK.OrthancPluginGetFontName(fontIndex); } /** * Return the size of a font. * * This function returns the size of a font that is built in the Orthanc core. * * @param fontIndex The index of the font. This value must be less than * OrthancPluginGetFontsCount(). * @return The font size. **/ public static int getFontSize( int fontIndex) { return NativeSDK.OrthancPluginGetFontSize(fontIndex); } /** * Declare a custom error code for this plugin. * * This function declares a custom error code that can be generated by this plugin. * This declaration is used to enrich the body of the HTTP answer in the case of an * error, and to set the proper HTTP status code. * * @param code The error code that is internal to this plugin. * @param httpStatus The HTTP status corresponding to this error. * @param message The description of the error. **/ public static void registerErrorCode( int code, short httpStatus, String message) { NativeSDK.OrthancPluginRegisterErrorCode(code, httpStatus, message); } /** * Register a new tag into the DICOM dictionary. * * This function declares a new public tag in the dictionary of DICOM tags that are * known to Orthanc. This function should be used in the OrthancPluginInitialize() * callback. * * @param group The group of the tag. * @param element The element of the tag. * @param vr The value representation of the tag. * @param name The nickname of the tag. * @param minMultiplicity The minimum multiplicity of the tag (must be above 0). * @param maxMultiplicity The maximum multiplicity of the tag. A value of 0 means * an arbitrary multiplicity (""n""). **/ public static void registerDictionaryTag( short group, short element, ValueRepresentation vr, String name, int minMultiplicity, int maxMultiplicity) { NativeSDK.OrthancPluginRegisterDictionaryTag(group, element, vr.getValue(), name, minMultiplicity, maxMultiplicity); } /** * Register a new private tag into the DICOM dictionary. * * This function declares a new private tag in the dictionary of DICOM tags that * are known to Orthanc. This function should be used in the * OrthancPluginInitialize() callback. * * @param group The group of the tag. * @param element The element of the tag. * @param vr The value representation of the tag. * @param name The nickname of the tag. * @param minMultiplicity The minimum multiplicity of the tag (must be above 0). * @param maxMultiplicity The maximum multiplicity of the tag. A value of 0 means * an arbitrary multiplicity (""n""). * @param privateCreator The private creator of this private tag. **/ public static void registerPrivateDictionaryTag( short group, short element, ValueRepresentation vr, String name, int minMultiplicity, int maxMultiplicity, String privateCreator) { NativeSDK.OrthancPluginRegisterPrivateDictionaryTag(group, element, vr.getValue(), name, minMultiplicity, maxMultiplicity, privateCreator); } /** * Format a DICOM memory buffer as a JSON string. * * This function takes as input a memory buffer containing a DICOM file, and * outputs a JSON string representing the tags of this DICOM file. * * @param buffer The memory buffer containing the DICOM file. * @param format The output format. * @param flags Flags governing the output. * @param maxStringLength The maximum length of a field. Too long fields will be * output as "null". The 0 value means no maximum length. * @return The resulting string. **/ public static String dicomBufferToJson( byte[] buffer, DicomToJsonFormat format, DicomToJsonFlags flags, int maxStringLength) { return NativeSDK.OrthancPluginDicomBufferToJson(buffer, format.getValue(), flags.getValue(), maxStringLength); } /** * Format a DICOM instance as a JSON string. * * This function formats a DICOM instance that is stored in Orthanc, and outputs a * JSON string representing the tags of this DICOM instance. * * @param instanceId The Orthanc identifier of the instance. * @param format The output format. * @param flags Flags governing the output. * @param maxStringLength The maximum length of a field. Too long fields will be * output as "null". The 0 value means no maximum length. * @return The resulting string. **/ public static String dicomInstanceToJson( String instanceId, DicomToJsonFormat format, DicomToJsonFlags flags, int maxStringLength) { return NativeSDK.OrthancPluginDicomInstanceToJson(instanceId, format.getValue(), flags.getValue(), maxStringLength); } /** * Create a DICOM instance from a JSON string and an image. * * This function takes as input a string containing a JSON file describing the * content of a DICOM instance. As an output, it writes the corresponding DICOM * instance to a newly allocated memory buffer. Additionally, an image to be * encoded within the DICOM instance can also be provided. * * Private tags will be associated with the private creator whose value is * specified in the "DefaultPrivateCreator" configuration option of Orthanc. The * function OrthancPluginCreateDicom2() can be used if another private creator must * be used to create this instance. * * @param json The input JSON file. * @param pixelData The image. Can be NULL, if the pixel data is encoded inside the * JSON with the data URI scheme. * @param flags Flags governing the output. * @return The resulting memory buffer. **/ public static byte[] createDicom( String json, Image pixelData, CreateDicomFlags flags) { return NativeSDK.OrthancPluginCreateDicom(json, pixelData.getSelf(), flags.getValue()); } /** * Compute an MD5 hash. * * This functions computes the MD5 cryptographic hash of the given memory buffer. * * @param buffer The source memory buffer. * @return The resulting string. **/ public static String computeMd5( byte[] buffer) { return NativeSDK.OrthancPluginComputeMd5(buffer); } /** * Compute a SHA-1 hash. * * This functions computes the SHA-1 cryptographic hash of the given memory buffer. * * @param buffer The source memory buffer. * @return The resulting string. **/ public static String computeSha1( byte[] buffer) { return NativeSDK.OrthancPluginComputeSha1(buffer); } /** * Generate an UUID. * * Generate a random GUID/UUID (globally unique identifier). * * @return The resulting string. **/ public static String generateUuid() { return NativeSDK.OrthancPluginGenerateUuid(); } /** * Detect the MIME type of a file. * * This function returns the MIME type of a file by inspecting its extension. * * @param path Path to the file. * @return The resulting string. **/ public static String autodetectMimeType( String path) { return NativeSDK.OrthancPluginAutodetectMimeType(path); } /** * Set the value of a metrics. * * This function sets the value of a metrics to monitor the behavior of the plugin * through tools such as Prometheus. The values of all the metrics are stored * within the Orthanc context. * * @param name The name of the metrics to be set. * @param value The value of the metrics. * @param type The type of the metrics. This parameter is only taken into * consideration the first time this metrics is set. **/ public static void setMetricsValue( String name, float value, MetricsType type) { NativeSDK.OrthancPluginSetMetricsValue(name, value, type.getValue()); } /** * Returns the symbolic name of a DICOM tag. * * This function makes a lookup to the dictionary of DICOM tags that are known to * Orthanc, and returns the symbolic name of a DICOM tag. * * @param group The group of the tag. * @param element The element of the tag. * @param privateCreator For private tags, the name of the private creator (can be * NULL). * @return The resulting string. **/ public static String getTagName( short group, short element, String privateCreator) { return NativeSDK.OrthancPluginGetTagName(group, element, privateCreator); } /** * Generate a token to grant full access to the REST API of Orthanc * * This function generates a token that can be set in the HTTP header * "Authorization" so as to grant full access to the REST API of Orthanc using an * external HTTP client. Using this function avoids the need of adding a separate * user in the "RegisteredUsers" configuration of Orthanc, which eases deployments. * * This feature is notably useful in multiprocess scenarios, where a subprocess * created by a plugin has no access to the "OrthancPluginContext", and thus cannot * call "OrthancPluginRestApi[Get|Post|Put|Delete]()". * * This situation is frequently encountered in Python plugins, where the * "multiprocessing" package can be used to bypass the Global Interpreter Lock * (GIL) and thus to improve performance and concurrency. * * @return The resulting string. **/ public static String generateRestApiAuthorizationToken() { return NativeSDK.OrthancPluginGenerateRestApiAuthorizationToken(); } /** * Create a DICOM instance from a JSON string and an image, with a private creator. * * This function takes as input a string containing a JSON file describing the * content of a DICOM instance. As an output, it writes the corresponding DICOM * instance to a newly allocated memory buffer. Additionally, an image to be * encoded within the DICOM instance can also be provided. * * Contrarily to the function OrthancPluginCreateDicom(), this function can be * explicitly provided with a private creator. * * @param json The input JSON file. * @param pixelData The image. Can be NULL, if the pixel data is encoded inside the * JSON with the data URI scheme. * @param flags Flags governing the output. * @param privateCreator The private creator to be used for the private DICOM tags. * Check out the global configuration option "Dictionary" of Orthanc. * @return The resulting memory buffer. **/ public static byte[] createDicom2( String json, Image pixelData, CreateDicomFlags flags, String privateCreator) { return NativeSDK.OrthancPluginCreateDicom2(json, pixelData.getSelf(), flags.getValue(), privateCreator); } }