 |  |  |  | 1.10 to 1.11: - Changed: the
SCP class (superclass of StorageSCP, QueryRetrieveSCP, etc.) is not public anymore. This should not impact existing code unless this class was used explicitely. Recompilation is recommanded. - Changed:
NORMALIZE_NEW_INSTANCE is now the default (see DicomWriter). - Changed: Some attribute names have been slightly changed in
Tag for the sake of consistency. Recompile to check if you are concerned. - Changed:
StorageSCP and QueryRetrieveSCP constructors does not throw DicomException anymore. - Added:
setDefaultPort, setDefaultAddress and setDefaultSecurePort in Plugin. - Added: Storage Commitment SCU and SCP.
- Added:
StorageSCU.store and StorageSCU.storeAndRequestCommitment. - Added:
FloatDate, Day and Time constructors that directly take year, month, etc. arguments. - Added:
dicom.stripped.jar (see README in the lib directory). - Added:
HangingProtocolQueryRetrieveSCU, HangingProtocolQueryRetrieveSCP, and support for Hanging Protocol Storage in StorageSCU and StorageSCP. - Added:
UID.create(). - Added:
StorageSCP.setAcceptAllSOPClasses() and StorageSCP.setAcceptedSOPClasses(String[]). - Added: Support for Encapsulated PDF storage.
- Added:
InputStream as a possible value for attributes of VR OB. - Added:
DicomWriter.write(IIOStreamMetadata). - Added:
QueryRetrieveSCU(PeerAE, DicomReader, boolean) constructor. - Added:
Dictionary.getName. - Added: DICOM 2007 update. In particular, added support for Enhanced XA Image and Segmentation.
- Improved: added
-raw flags to TestStorageSCU and TestStorageSCP, and added comment about setRawValues in StorageSCP and StorageSCU javadocs. - Improved: Tags retired from the DICOM standard are now marked as deprecated in Tag.
- Improved: long names (with correct blanks and cases) are now used to display attribute names.
- Improved: added a workaround that allows proper use of non-standard VOI LUT data found in some X-ray images from Agfa, Fuji or GE. Without this workaround, the images were poorly contrasted after a calling
applyGrayscaleTransforms. - Fixed: an error in
TestStorageSCU that prevented to test the use of move. - Fixed: writing or sending with Extended JPEG transfer or JPEG2000 syntax could fail when the native JAI Tools lib are not available.
- Fixed: could not read objects using implicit VR containing an unknown tag with undefined length.
1.09 to 1.10: - Changed: overhaul of the raw mode mecanism: a problem when writing in raw mode with preferred TS has been fixed.
setRawMode methods are deprecated in favor of setRawValues, which allows to choose among 3 behaviours: no raw values, all values are raw, and only PixelData value is raw. Added QueryRetrieveSCU.setRawValues. Raw values only applies to objects read from file, written to file, and received by Storage SCP and Q/R SCU (C-GET), and sent by Storage SCU, not to identifiers during Q/R. The pixel data is not loaded in memory anymore when reading raw pixel data. Server.setRawMode deprecated in favour of StorageSCP.setRawValues. DicomWriter.setRawMode is now useless. The proper transfer syntax is now used when sending (Storage SCU) objects with raw values. - Changed: when
DicomMetadata.applyGrayscaleTransformations is called on an object specifying a not-integral rescale slope or not-integral rescale intercept, the new image sample type is Float. - Added:
StorageSCP.setPreferredTransferSyntaxes, to control the selected transfer syntaxes and e.g. allow for receiving compressed pixel data. - Added: ability to send compressed images (
DicomWriter.setTransferSyntax now used by StorageSCU). - Added:
DicomWriter.setNormalization. - Added:
ReceivedObject.getLocalAE, getRemoteAE, getRemoteAddress, getRemotePort. - Added: FileSet writing (DICOMDIR).
- Added:
DicomReader.getFileMetaElements. - Added:
DicomReader.readAsRendered. - Added: verification SCU.
- Fixed: when a Storage SCU connects to a plugin SCP and negotiates more than 1 abstract syntax per SOP class, an exception could be thrown by the plugin when sending the Store response.
- Fixed: added a workaround for a bug introduced in jai-imageio tools 1.1 that prevented to read JPEG 2K compressed images.
- Fixed: spurious "DICOM protocole violation: Unknown VR" when using multi-thread.
- Improved: warning instead of exception when reading unknown VR and writing
null SpecificCharacterSet. - Improved:
TestQueryRetrieveSCU now can use move. 1.08 to 1.09: - Added: support for character sets other than Latin1 (see
Plugin.setSpecificCharacterSet). - Added: Basic Worklist Management SCU and SCP.
- Added: SSL and TLS support (see
SecureTransport). - Added:
QueryRetrieveSCU.cancel. - Added: classes
DayRange, TimeRange and DateRange for implementing range matching during query/retrieve or worklist management. - Added:
ReceivedObjectListener, an alternative to StorageSCPListener that allows more control. - Added: arbitrary objects without pixel values can now be written.
- Added: the ability to bind an SCP to a specific IP address.
- Added:
FloatingDate, to prevent the writing of a timezone in DT (Date Time) attributes when the timezone is unknown. - Added: use of calling and called Application Entities (see
SCP.setApplicationTitles). - Added:
QueryRetrieveSCU.getSupportedBySCP and QueryRetrieveSCU.moveSupportedBySCP. - Fixed: group length attributes (of groups > 2) are now skipped when writing.
- Fixed: API CHANGE: reading DS (Decimal String) attributes now returns Double object instead of Float. The DS format allows more precision that the java float type.
- Fixed: formatting DS (Decimal String) has been improved (particularly, writing a double to a DS attribute could be incorrectly truncated).
- Fixed: color JPEG-compressed Secondary Capture images had an incorrect PlanarConfiguration attribute value.
- Fixed: when writing US or US-MF images using a palette, a 8-bit palette were written, while the standard states only a 16-bit palette is allowed.
- Fixed: the plugin constrained single-frame Secondary Capture images to have unsigned pixel values, while the standard does not state so.
- Fixed: date parsing and writing could theoretically get corrupted under heavy thread load.
- Fixed: DT (Date Time) parsing was incorrect if a timezone was specified but some trailing components (e.g. seconds, milliseconds) were null.
- Fixed: C-GET received by the plugin running a Query/Retrieve SCP could deadlock.
QueryRetriveSCPListener.retrieveReceived is now called within a dedicated thread instead of the association thread. - Fixed: empty components in person names or empty values in multiple-value data elements could be skipped.
- Improved:
Server.setRawValues is now deprecated in favour of Server.setRawMode. - Improved: API CHANGE:
StorageSCP and QueryRetrieveSCP constructors can now throw DicomException (if trying to start an SCP with secure transport profile different than a SCP already running on existing port). 1.07 to 1.08: - Added: DICOM 2004 support (Enhanced CT, Ophthalmic SOP classes...).
- Added: Writing using compressed transfer syntaxes.
- Added:
DicomMetadata.getSOPClass and DicomMetadata.getSOPInstance. - Added:
DataSet.findSequence. - Improved: when a Modality LUT specifies slope and intercept that could lead to overflow of the short or ushort range,
applyGrayscaleTransforms now convert to a 32-bit image. - Improved: retired SOP classes now accepted when receiving from network.
- Improved:
VOIWindowColorModel now accepts 32-bits data type. - Improved: Storage SCP:
objectReceived callback now called before sending the C-STORE-RSP. - Improved: added a workaround to read non-standard files missing the meta information group length (0002,0000).
- Fixed: Attribute normalization when writing using some SOP classes.
- Fixed: Decoding of some VOI LUT could fail.
- Fixed: "DICOM protocole violation: Item expected" exception with Java 1.5 when reading some jpeg-compressed images.
- Fixed:
PersonName.toString used the first name for the middle name. - Fixed: Bad transfer syntax used when a DICOM file is written containing an object that were received compressed from the network.
- Fixed: Verification SCP and Storage SCP: a non-compliant Priority attribute was sent in response messages.
- Fixed:
getSystemResource replaced by getResource when loading the DICOM dictionary. Could cause exceptions when bundling the plugin in a signed jar file. 1.06 to 1.07: - Added: Query/Retrieve SCP.
- Added:
Identifier.getLevel, Identifier.getDataSet, Identifier.getModel. - Added:
Plugin.serversAreDaemons, Plugin.setServersAreDaemons. - Added:
PersonName.equals. - Added:
DataElement.getVR. - Added: Raw mode (
DicomReader.setRawMode, DicomWriter.setRawMode). - Added: Error code
ApplicationError. - Improved:
DicomMetadata.applyGrayscaleTransformations, when no VOI LUT are specified in the object, computes a graylevel window from the minimum and maximum pixel values found in the image. - Improved:
DicomMetaData and DicomObject are now serializable. - Fixed:
DicomReader.setInput(null) does not throw exception anymore, as required by ImageIO specifications. - Fixed:
StorageSCP.close() now works properly. - Fixed:
DicomMetadata.applyGrayscaleTransformed would not work if WindowCenter and WindowWidth have multiple values. - Fixed: MONOCHROME1 images could be inverted.
- Fixed: Modality LUT with unsigned short data type now supported.
- Fixed: Dataset validation for Enhanced-MR.
- Fixed: No more exception when writing empty person names.
- Fixed: Timezone format in written Date-Time data elements was not standard.
1.05 to 1.06: - Added: Support for DICOM 2003 (includes support for Enhanced MRI).
- Added: Support for reading JPEG 2000 encoded pixel data.
- Added:
DicomMetadata.applyGrayScaleTransformations() and DicomReader.getTransformedImageType that make use of grayscale transformations possibly specified in the DICOM metadata (Modality, VOI and Presentation LUTs) in order to obtain BufferedImages suitable for immediate display. - Added: an example directory in the archive containing examples of code for the main features of the plugin.
- Added: All non-group standard attributes are now defined in class
Tag. - Added:
Plugin.addSupportedSOPClass() that allows the transfer of instances of non-standard SOP classes. - Added:
findFloat, findDouble and findDataSet in DataSet. - Added:
Identifier.setLevel. - changed: the handling of exceptions in
StorageSCP. See StorageSCP.server.setExceptionListener() and the semantic of start() and stop(). - changed:
PersonName does not subclass Vector anymore. - Fixed: GET operations could not work with some Query/Retrieve SCP (missing SCP role negotiation).
- Fixed: samples decoding error when an image is encoded in JPEG lossless and the DICOM metadata specifies a PixelRepresentation of 1 (signed).
- Fixed: a possible deadlock in the network layer.
1.04 to 1.05: - Fixed: The colormodel of images encapsulated as JPEG-lossless and encoded using a palette was incorrect.
- Fixed: Interoperability problems with applications sending large PDU (>32768).
- Improved: all transfer syntaxes accepted when reading a file are now accepted using the C-GET SCU (
QueryRetrieveSCU.get()). - Fixed: a bug in the C-MOVE SCU (
QueryRetrieveSCU.move()). 1.03 to 1.04: - Fixed: A bug in the network layer preventing the plugin to receive connections from software of some other vendors.
- Fixed: A bug in the network layer when sending dicom object.
- Added:
Dictionary.contains(int tag). - Changed: the interface
MessageReceivedListener was slightly changed in order to receive notification of IOException and not only DicomException. - Fixed: Color models were incorrects when reading some JPEG-encoded images.
- Added:
DicomMetadata.getAttributes(), FileSet.Record.getAttributes() and class DataSet in order to allow browsing all attributes of an object or directory record. - Fixed:
FileSet() constructor now accepts null for the reader value as stated in the API documentation. 1.02 to 1.03: - Added: Support for reading JPEG progressive, JPEG-LS and JPEG-Lossless encoded images (see the conformance page).
- Fixed: A bug when decoding 16bits RLE-encoded images.
- Fixed: An exception was thrown when writing some images with a signed pixel representation.
- Added: Class
DicomException and UID are now public. - Added:
DicomMetadata.removeAttribute() and DataSet.remove(). - Improved: Tolerance against not-conform value encoding.
- Added:
DicomReader.getSampleModel() and DicomReader.getColorModel(). - Fixed: A bug preventing tags belonging to repeated groups to be written.
1.01 to 1.02: - Fixed: An important bug in the network layer. This bug mostly concerns the Storage SCP.
- Fixed: Image data with Byte format sent using a Big Endian transfer syntax were corrupted.
1.0 to 1.01: - Fixed: Using the 1-argument
QueryRetrieveSCU constructor or using the 2-argument QueryRetrieveSCU constructor and specifying null as the second argument threw a NullPointerException. |