Mercurial > hg > orthanc-java
diff JavaSDK/be/uclouvain/orthanc/DicomInstance.java @ 0:3ecef5782f2c
initial commit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 18 Oct 2023 17:59:44 +0200 |
parents | |
children | 26c08ff926a3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/JavaSDK/be/uclouvain/orthanc/DicomInstance.java Wed Oct 18 17:59:44 2023 +0200 @@ -0,0 +1,296 @@ +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/. + **/ + + +/** + * DICOM instance managed by the Orthanc core + **/ +public class DicomInstance { + private long self; + + /** + * Construct a Java object wrapping a C object that is managed by Orthanc. + * @param self Pointer to the C object. + **/ + protected DicomInstance(long self) { + if (self == 0) { + throw new IllegalArgumentException("Null pointer"); + } else { + this.self = self; + } + } + + /** + * Return the C object that is associated with this Java wrapper. + * @return Pointer to the C object. + **/ + protected long getSelf() { + return self; + } + + @Override + protected void finalize() throws Throwable { + dispose(); + super.finalize(); + } + + /** + * Manually deallocate the C object that is associated with this Java wrapper. + * + * This method can be used to immediately deallocate the C object, + * instead of waiting for the garbage collector to dispose the Java wrapper. + **/ + public void dispose() { + if (self != 0) { + NativeSDK.OrthancPluginFreeDicomInstance(self); + self = 0; + } + } + + /** + * Parse a DICOM instance. + * + * This function parses a memory buffer that contains a DICOM file. The function + * returns a new pointer to a data structure that is managed by the Orthanc core. + * + * @param buffer The memory buffer containing the DICOM instance. + * @return The newly constructed object. + **/ + public static DicomInstance createDicomInstance( + byte[] buffer) { + return new DicomInstance(NativeSDK.OrthancPluginCreateDicomInstance(buffer)); + } + + /** + * Parse and transcode a DICOM instance. + * + * This function parses a memory buffer that contains a DICOM file, then transcodes + * it to the given transfer syntax. The function returns a new pointer to a data + * structure that is managed by the Orthanc core. + * + * @param buffer The memory buffer containing the DICOM instance. + * @param transferSyntax The transfer syntax UID for the transcoding. + * @return The newly constructed object. + **/ + public static DicomInstance transcodeDicomInstance( + byte[] buffer, + String transferSyntax) { + return new DicomInstance(NativeSDK.OrthancPluginTranscodeDicomInstance(buffer, transferSyntax)); + } + + + /** + * Get the AET of a DICOM instance. + * + * This function returns the Application Entity Title (AET) of the DICOM modality + * from which a DICOM instance originates. + * + * @return The resulting string. + **/ + public String getInstanceRemoteAet() { + return NativeSDK.OrthancPluginGetInstanceRemoteAet(self); + } + + /** + * Get the size of a DICOM file. + * + * This function returns the number of bytes of the given DICOM instance. + * + * @return The size of the file, -1 in case of error. + **/ + public long getInstanceSize() { + return NativeSDK.OrthancPluginGetInstanceSize(self); + } + + /** + * Get the DICOM tag hierarchy as a JSON file. + * + * This function returns a pointer to a newly created string containing a JSON + * file. This JSON file encodes the tag hierarchy of the given DICOM instance. + * + * @return The resulting string. + **/ + public String getInstanceJson() { + return NativeSDK.OrthancPluginGetInstanceJson(self); + } + + /** + * Get the DICOM tag hierarchy as a JSON file (with simplification). + * + * This function returns a pointer to a newly created string containing a JSON + * file. This JSON file encodes the tag hierarchy of the given DICOM instance. In + * contrast with ::OrthancPluginGetInstanceJson(), the returned JSON file is in its + * simplified version. + * + * @return The resulting string. + **/ + public String getInstanceSimplifiedJson() { + return NativeSDK.OrthancPluginGetInstanceSimplifiedJson(self); + } + + /** + * Check whether a DICOM instance is associated with some metadata. + * + * This function checks whether the DICOM instance of interest is associated with + * some metadata. As of Orthanc 0.8.1, in the callbacks registered by + * ::OrthancPluginRegisterOnStoredInstanceCallback(), the only possibly available + * metadata are "ReceptionDate", "RemoteAET" and "IndexInSeries". + * + * @param metadata The metadata of interest. + * @return 1 if the metadata is present, 0 if it is absent, -1 in case of error. + **/ + public int hasInstanceMetadata( + String metadata) { + return NativeSDK.OrthancPluginHasInstanceMetadata(self, metadata); + } + + /** + * Get the value of some metadata associated with a given DICOM instance. + * + * This functions returns the value of some metadata that is associated with the + * DICOM instance of interest. Before calling this function, the existence of the + * metadata must have been checked with ::OrthancPluginHasInstanceMetadata(). + * + * @param metadata The metadata of interest. + * @return The resulting string. + **/ + public String getInstanceMetadata( + String metadata) { + return NativeSDK.OrthancPluginGetInstanceMetadata(self, metadata); + } + + /** + * Get the origin of a DICOM file. + * + * This function returns the origin of a DICOM instance that has been received by + * Orthanc. + * + * @return The origin of the instance. + **/ + public InstanceOrigin getInstanceOrigin() { + return InstanceOrigin.getInstance(NativeSDK.OrthancPluginGetInstanceOrigin(self)); + } + + /** + * Get the transfer syntax of a DICOM file. + * + * This function returns a pointer to a newly created string that contains the + * transfer syntax UID of the DICOM instance. The empty string might be returned if + * this information is unknown. + * + * @return The resulting string. + **/ + public String getInstanceTransferSyntaxUid() { + return NativeSDK.OrthancPluginGetInstanceTransferSyntaxUid(self); + } + + /** + * Check whether the DICOM file has pixel data. + * + * This function returns a Boolean value indicating whether the DICOM instance + * contains the pixel data (7FE0,0010) tag. + * + * @return "1" if the DICOM instance contains pixel data, or "0" if the tag is + * missing, or "-1" in the case of an error. + **/ + public int hasInstancePixelData() { + return NativeSDK.OrthancPluginHasInstancePixelData(self); + } + + /** + * Get the number of frames in a DICOM instance. + * + * This function returns the number of frames that are part of a DICOM image + * managed by the Orthanc core. + * + * @return The number of frames (will be zero in the case of an error). + **/ + public int getInstanceFramesCount() { + return NativeSDK.OrthancPluginGetInstanceFramesCount(self); + } + + /** + * Get the raw content of a frame in a DICOM instance. + * + * This function returns a memory buffer containing the raw content of a frame in a + * DICOM instance that is managed by the Orthanc core. This is notably useful for + * compressed transfer syntaxes, as it gives access to the embedded files (such as + * JPEG, JPEG-LS or JPEG2k). The Orthanc core transparently reassembles the + * fragments to extract the raw frame. + * + * @param frameIndex The index of the frame of interest. + * @return The resulting memory buffer. + **/ + public byte[] getInstanceRawFrame( + int frameIndex) { + return NativeSDK.OrthancPluginGetInstanceRawFrame(self, frameIndex); + } + + /** + * Decode one frame from a DICOM instance. + * + * This function decodes one frame of a DICOM image that is managed by the Orthanc + * core. + * + * @param frameIndex The index of the frame of interest. + * @return The newly constructed object. + **/ + public Image getInstanceDecodedFrame( + int frameIndex) { + return new Image(NativeSDK.OrthancPluginGetInstanceDecodedFrame(self, frameIndex)); + } + + /** + * Writes a DICOM instance to a memory buffer. + * + * This function returns a memory buffer containing the serialization of a DICOM + * instance that is managed by the Orthanc core. + * + * @return The resulting memory buffer. + **/ + public byte[] serializeDicomInstance() { + return NativeSDK.OrthancPluginSerializeDicomInstance(self); + } + + /** + * Format a DICOM memory buffer as a JSON string. + * + * This function takes as DICOM instance managed by the Orthanc core, and outputs a + * JSON string representing the tags of this 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 String getInstanceAdvancedJson( + DicomToJsonFormat format, + DicomToJsonFlags flags, + int maxStringLength) { + return NativeSDK.OrthancPluginGetInstanceAdvancedJson(self, format.getValue(), flags.getValue(), maxStringLength); + } + +}