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

  1. A Normal DICOM Association is negotiated, but instead of standard SOP_Classes, one or both of the special print Meta_SOP_Classes are negotiated
  2. A Basic_Film_Session object is created using N-CREATE
  3. A Basic_Film_Box is created within the context of that session (again using N-CREATE. As part of this step, the SCU specifies the Format of the images on that film, e.g. STANDARD\2,3 would mean 2x3 layout. The SCP then itself (without a further request from the SCU) creates the appropriate number of Image_Boxes (which can be Colour or greyscale) and returns their details as part of the Basic Film Box N-CREATE response.
  4. The SCU "sets" the pixel data into the image boxes using the N-SET operation.
  5. The SCU sends an N-ACTION asking the SCP to print the films (this can be done either for the session as a whole or an individual film, but some printers (wrongly) only support one or the other)
  6. The SCU should then delete the objects it has created using N-DELETE, but in practice this is not necessary, as the SCP can delete any objects left over when the association is closed (this differs from all other DICOM services, where it is wrong to make any assumptions based on the closing of an association).

All this complexity is hidden from users of the DicomObjects DicomPrint Object for which the following code works:

Dicom print as New DicomPrint
print.Open([IP address], [port], [calling AET], [Called AET])
print.Format = "STANDARD\2,3"
For Each Image in viewer.Images
  print.PrintImage Image