Service Class Roles
All DICOM network communications occur between an SCP and an SCU
SCU is an acronym for “Service Class User” which is the weird DICOM term for a client application. SCP is an acronym for “Service Class Provider” which is the weird DICOM term for a server application. In the vast majority of cases, the Association is initiated by the SCU with the SCP responding, but DICOM does allow Reverse Role Negotiation whereby the initiator can request to be regarded as the SCP.
Directly importing compressed data into DICOM is possible by the _SetCompressedPixelFile_ method which maps an external file as the compressed pixel data of that DicomImage instance. Unlike the import method, this just sets the pixel data and nothing else, so it is required to update the rest yourself (e.g. bit depth, frame count, etc).
Example code snippet with dummy values : int width = 1280; int height=720; int frameRate=25; // 25 frames per seconds for example float duration = 5; // 5 seconds the total duration of video, for example string transferSyntax = "1.
Setting TransferFunction in 3D
Sample code for general purpose colour/opacity adjustment.
The result might not good good on particular data because this is intended purely for demonstration purposes!
Significance of AssociationClosed Event
The AssociationClosed Event is provided in both COM & .NET versions, but by default disabled.
Signing ASP.NET Web Application with MC ApplicationSigningTool
For information on how to use the Application Signing Tool, see the Application Signing Keys article.
To sign the asp.net web application is the same process, but with some extra steps to follow:
Sign YourWebApplication.DLL Make sure the target platform matches the IIS Application Pool’s platform (2.0 vs 2.0 or 4.0 vs 4.0) Under Project Properties -> “Package/Publish Web”, select “All files in this project” option under “Items to deploy” Disable shadowCopyBinAssemblies in the Web.
Signing exe's with specific licence keys
Application signing is the process of validating a compiled program to use DicomObjects in association with a *.lic licence file which is specific to that executable. This .lic file is placed adjacent to the program to be executed which contains this executable specific licences for using DicomObjects or XdsObjects. This avoids any online/offline activation of DicomObjects or XdsObjects for running that program.
Two main usage of a signed exe is when an application is installed on an offline machine without Internet access and/or system that doesn’t need to have DicomObjects licence installed.
DicomObjects (both COM and .NET versions) supports smoothing of displayed images, controlled by the MagnificationMode and MinificationMode properties of the image. Whilst using these produces a more visually pleasing image, it does not actually add to the “value” of an image, and does have a performance penalty, so developers are advised to disable these features whilst windowing and scrolling etc. by setting both to doFilterReplicate
There are two independent properties which control such smoothing in DicomObjects:
Some Systems Behave Badly when sent One Image Per Association
Unfortunately, the designers of some systems seem never to have bothered to read the DICOM standard.
The only legal way to group images into series and studies is by using their UIDs, but there is a problem as DICOM has no simple “end of study” marker, and therefore many badly-designed (but common!) systems make the mistake of assuming that the end of an association equals the end of a study.
Sorting Images in DicomObjects is quite different in COM and .NET versions, due to the different structures of the collections which hold them.
Sorting Images in DO.NET
Sorting Images using DicomObjects.NET is slightly different from using the COM version, but the user has more flexibility as we provide an ArrayList wrapper to the DicomImageCollection object so that people can use all ArrayList’s intrinsic methods to arrange the sorting.
However, you still need to write your own “Comparer” routine in order to use the “Sort” method of the ArrayList object, and by doing so you can have customized sorting facilities to suit your need.
Special Labels in DicomObjects
DicomLabels of type LabelSpecial are used where the text content is determined by DicomObjects rather than by the programmer. The first use is for anatomic side markers, but the more general name has been used, as other types may be used in the future.
Anatomic side markers are created by setting the Text (COM version) or Text (.NET version) property of the DicomLabel to one of the following 4 values:
Specifying outgoing IP when making a DICOM connection
It is possible to choose which outgoing interface to use when making an outgoing DICOM association using code such as below:
This page contains links to various sources of information about healthcare information interchange standards.
DICOM DICOM stands for “DIgital COmmunication in Medicine” and it is the universally accepted standard for exchange of radiological images (X-ray, ultrasound, CT, MRI etc.), but it is also used for other medical imaging, such as dermatology, ophthalmology and even pathology. It specifies all aspects of the data exchange process, from low level formatting and image compression, to templates for different types of images, and it even has its own (very complex) network protocol.
Storage Commitment is a DICOM service which allows a creator of images or other Composite Instances to check that they have been stored safely by a server (the SCP) before deleting from its own cache. The images are stored as normal using C-STORE (i.e. Storage Commitment is not used ot transfer the images themselves), but then the SCU sends a storage commitment request in the form of an N-ACTION asking the SCP to report back once the the listed images are safe, which it does asynchronously using N-EVENT-REPORT.
Store PresentationState into a DicomImage
PresentationStates are normally saved as external files but sometimes people may want to store them within the associated DicomImage.