Basic Film Box
A Basic Film Box is a Normalised Instance which represents a particular sheet of film to be created during Printing as requested by the SCU. Its properties control aspects such as the size, image format, background density etc.
The values in this object can be controlled in DicomObjects by setting values into the dataset provided by the FilmBox property of the DicomPrint object before printing any images.
Basic Film Session
A Basic Film Session is a Normalised Instance which represents the whole session of Printing as requested by the SCU. Its properties control aspects such as the number of copies of each page to print.
The values in this object can be controlled in DicomObjects by setting values into the dataset provided by the Session property of the DicomPrint object, before printing any images.
Controlling Printer Smoothing
Printers differ greatly in their default behaviour for smoothing/interpolating pixel data. DICOM does provide a mechanism for this to be controlled by the print SCU, but printers do vary in how they interpret and implement this functionality.
If you find that a printout is showing the native resolution of the image (which users will think looks “pixilated”, as they often don’t understand how low resolution the original image really is!), then you can try adding attribute 2010,0060 to either the FilmBox or ImageBox datasets of the DicomPrint object - e.
Custom Print Formats
Many people wish to “merge” images to make print formats which the printer does not support, and this is possible, but a lot more work than simply asking the printer to do it for you!
Basically, you need to make a raw image as follows:
Make a single large image to hold the merged pictures
Use AllocatePixelSpace to make a blank pixel area Set all the 0028 attributes to define bit depth, size etc.
DICOM Print Service
Printing in DICOM is unlike any other printing system used in the world, with no relation to PDF, network print protocols etc. Not surprisingly, it uses standard DICOM mechanisms, and although it is one of the original 1993 services, it is probably one of the most complex services in the standard!
There are multiple steps, all using Normalised Operations
Get Patient Info from DICOM Print
Is it possible to get patient information from DICOM Print? Some developers, faced by systems with DICOM Print and no DICOM C-STORE have wondered whether that “DICOM output” could be used to capture images to store in a PACS.
Unfortunately, the answer is no - Patient Information cannot be retrieved from Printing Data as DICOM Printing only contains layout and pixel data, there is no patient information at all, not even a PatientID etc, let alone Modality or study Information.
How to Improve the Quality of Labels when Printing
Some users find that they get poor quality text, lines etc. when printing images to DICOM printers, especially when printing intrinsically small images, such as 256x256 MRIs or PET images.
This happens because DICOM only allows such annotations to be “burnt-in” to the pixel data, and the annotations cannot be sent directly to the printer as text (this is a DICOM rule, and is not unique to DicomObjects). Therefore, DicomObjects puts labels onto the image using the “Pixel grid” of the image itself, and the printer then scales that to match the space available.
There are two sorts of Image Box objects used in Printing:
Basic GrayScale Image Box (note US spelling) Basic ColorImage Box (note US spelling) Both are Normalised Instances which represent individual areas on a film into pixel pixel data is placed, using N-SET operations.
The values in these object can be controlled in DicomObjects by setting values into the dataset provided by the ImageBox property of the DicomPrint object before printing images using PrintImage.
Annotations DICOM Printing contains a specification for ‘Annotations’, but the terminology is very confusing, so this page is designed to explain the facility, and avoid misunderstandings.
When a FilmBox is created, it has 3 types of area, as in this diagram:
Black Areas where pixel data can be printed (Using N-SET)
Yellow nothing can be printed here
In general, the arrangement of the pixel data areas is defined by the Format string (e.
Printing "True Size" Images
We are often asked how to persuade a DICOM printer to print images (normally plain radiographs) “TRUE” size. This is normally possible (depending on the capabilities of the printer) but is harder than expected, as the DICOM standard requires most of the relevant attributes (pixel size etc.) to be removed from an image before it is sent to the printer :-( The problem is compounded by the fact that the default behaviour of almost all printers is “scale to fit” - fitting the image as best they can into the space available on the film.
Printing without using DicomPrint
Although DicomPrint object is designed to make printing simple and easy for developers to code, it is possible to use a more advanced DicomConnection (COM version) or DicomAssociation (.NET version) object to meet your special requirement.
The code below gives a starting point for those wishing to do this themselves
DicomObjects.NET DicomAssociation cn = new DicomAssociation(); DicomDataSet printer; DicomImageCollection ims; DicomImage thisim; string BFSUID, filmboxUID, uidroot; DicomDataSetCollection ImageBoxList; DicomDataSet session; DicomDataSet filmbox; DicomDataSet refSessionItem; DicomDataSetCollection refSessionSequence; DicomDataSet ImageSequenceHolder; DicomDataSetCollection ImageSequence; DicomDataSet NullDataSet; int imno; int imnofilm; int uidint; // This example uses explicit UIDs for objects created.