Home
        Merge DICOM Toolkit™ .NET/C# User`s Manual
         Contents
1.                                                                           72  Association                                                                         73  Application Context Name                  sse nennen nennen 73             Listen POM        73  MCapplication object of the local                                                                  73  Application Entity                                                    74  Implementation Class UID and Implementation Version                                74  Maximum PDU SIZes s    eite aere kx Ek phan             dads e                     74  The Proposed Context                      444000000          74  The Read Timeout Value                      sese eren nennen 74  The Remote Host s Name and                                                                       75  ASSOCIATION Role                                Ug a                 75  Association                                        75  Using the MCsopClass         5                              75  Using the MCvr                             76  Using the MCtag Class                                    eaa 77  Constructing non private 1805    78  Constructing private   805                               78  Using the MCdataElement         5                                    78  Constructing standard data                                         79  Constructing non standard data                                                                        79  Wor
2.                          SYNTAXES SUPPORTED   2   Number of Syntaxes  SYNTAX 1   EXPLICIT LITTLE ENDIAN  SYNTAX 2   IMPLICIT LITTLE ENDIAN                M RGE    Fiealthcare    37    Merge DICOM Toolkit      MCtransferSyntax  MCtransferSyntaxList    Transfer syntax priority  during association  negotiation    38    NET C  User s Manual     Storage_Service_List  lists some standard storage service class services  used by Merge DICOM Toolkit  The SYNTAX_LIST_N parameter has been  added to this example to specify a transfer syntax list for each service  This  optional parameter is set to the name of another section in the application profile  which lists a group of DICOM transfer syntaxes to be negotiated  When this  parameter is not set  the default non compressed transfers syntaxes  implicit VR  little endian  explicit VR little endian  and explicit VR big endian  are negotiated     The  MR_Syntax_List    US_Syntax_List   and  CT_Syntax_List   sections each define a separate transfer syntax list for the MR  US  and CT  services respectively  Merge DICOM Toolkit currently supports all transfer  syntaxes specified in the DICOM standard  The names used for these transfer  syntaxes are defined in Table 33  in Appendix D  Configuration Parameters     As mentioned earlier  Merge DICOM supports the dynamic creation of service  lists at runtime  The Assembly also provides the MCtransferSyntaxList getObject  factory method to construct an MCtransferSyntaxList object from information i
3.                         7                 5  Development Platform Requirements                 6  Assembly Structure             esses enne eene nnne nennen nnne nnns e stets 6  Merge DICOM C C   Toolkit Dynamic Library                                                7  Binary Message Information and Data Dictionary Files                                   8  Sample Applications                                                           8  Merge DICOM Message Database Manual and                                              8  Documentation                                 9  GONVENTIONS     E 9  Understanding                             ore to e de act            10  General                                                                 tenens 10  Application                             10  Services and Meta                                               10  Information                              15  INGIWOMKING                      16  er inch                              16  Association                                                                      17                                eT      Me Reel 18  DICOM Data Dictionary                                                     19  Message Handling             2 en ceeded teeters nd edition 20  Private                 amp  m  21  Media Interchange           cccceecceeeeeeeeeeeeeeeeeeeeeeeaeeeeeeaaeeeeeeaaeeeseeaaeeeeeeaaeeeeeeaaeeeeeeaas 22  DICOM Files Em 22  File SOUS EE 28  The  DIGOMDIR  14    itti dte Bre e o be       
4.                  86  Retrieving Contained Attribute Sets                         sse 87  Using the MCattribute                      enne 87  Adding Attributes to an Attribute                                      88         Merge DICOM Toolkit      vi    NET C     User s Manual    Using the MCattributeSet indexer to access MCattribute instances              88  Removing Attributes from an Attribute                 22222212    89  Attribute                    2             89  Assigning Attribute Values from                                           02222   89  Assigning Attribute Values from                                                                      89  Difference between setValue  addValue  and indexer                                   90  Assigning a NULL attribute                                       90  Assigning a non NULL                                      90  Using an MCdataSource class to assign an attribute value                           92  Retrieving Attribute Values                  94  Using a Callback Class to Retrieve an Attribute s Value                                95  Retrieving an Attribute Value s                                                                        97  Listing an Attribute                                    97  Converting an Attribute Set into an XML                                                           98  Converting an XML string into an Attribute                                                   99         Pixel Dal
5.          Storage Service List   SERVICES SUPPORTED  SERVICE 1       1 4 Number of Services  STANDARD CT                      M RGE 69    Fiealthcare    Merge DICOM Toolkit    NET C     Transfer Syntax Lists for  SCPs    User s Manual    In this case  the client  SCU  would propose the CT Image Storage service in a  single presentation context  The transfer syntaxes for each service are the three  standard  non encapsulated  DICOM transfer syntaxes     The following example is the configuration for a client  SCU  that supports more  than one presentation context for a service      Acme Store SCP                       PORT  NUMBER   104  HOST  NAME   acme sunl  SERVICE LIST   Storage Service List        Storage Service List                                            SERVICES SUPPORTED   2 4 Number of Services  SERVICE 1   STANDARD CT   SYNTAX LIST 1   CT Syntax List 1  SERVICE 2   STANDARD CT   SYNTAX LIST 2   CT Syntax List 2              CT Syntax List 1   SYNTAXES SUPPORTED   1 4 Number of Syntaxes  SYNTAX 1     JPEG BASELIN                             CT Syntax List 2   SYNTAXES SUPPORTED   1  SYNTAX_1 IMPLICIT_LITTLE            Number of Syntaxes  _ENDIAN                            If a server  SCP  accepts both of these presentation contexts  the client  SCU   must use the TransferSyntax property of the MCdimseMessage class to  specify which presentation context to send a message over as follows     MCdimseMessage dm     A DICOM message ready to send  dm TransferSyntax   
6.        System Profile    The System Profile is used to define system wide parameters  These  parameters apply across all associations with other DICOM application entities   The location of this file is provided by the MERGECOM 3  PROFILE parameter of  the  MergeCOM3  section of the MERGE   INI file                             The following are a few notes to keep in mind concerning the System Profile     e You must specify your own unique DICOM Implementation Class UID and  place it in this file along with an optional Implementation Version  These  need to be documented in your DICOM conformance statement     e There are several exception options specified at both the association and  DIMSE levels of DICOM communication  You should not have to modify  these options in normal circumstances and doing so could make your  application non DICOM conformant     e The DICOM Upper Layer section network time outs can be modified  This is  useful on slower or less predictable networks  e g   WAN s      e        section of the System Profile dealing with transport parameters is  important  This is where you specify the TCP IP listen port for a DICOM  server  SCP  application  along with the number of simultaneous  associations your server will support over this port     Table 33 defines how each parameter should be defined within the system profile     188 M RGE    Healthcare    Table 33  System profile parameters    Section Description    ACCEPT_ANY_APPLICATION_TITLE t ASSOC PARMS If s
7.     404444404       0  0000               nnns nnne rennen 143  Relationship Types between Content                                                       145  Content Item Identifier                         esses 147  Observation                                                                nnns 148  Structured Reporting                                            149  Overview of the Merge DICOM Toolkit SR                                                     153  Encoding SR DOCUMENTS              eccceceeeeeeeeeeeeeeseaeeeeeaeeeeeeeseeeesaeeeeeeteeeees 154  Reading SR Documents                   ssssssssssssseseeeeeen nennen 157   Deploying Applications    nennen nennen 158  Merge DICOM Required Files                           esee 158  Configuration Options    nennen nennen nnne 160  Appendix A  Frequently Asked Questions                     ese 163  Appendix B  Unique Identifiers                                       166  Summary of UID                                               166  Obtaining a                                                                                     167  Vii    Merge DICOM Toolkit                User s Manual    Obtaining a UID From     6               entere 167  Appendix C  Writing a DICOM Conformance                                                       168  Conformance Statement                            168  Application Data FloW         oct rn tn nete et eec nmt Eel eme Een 168  Sequencing of Real World Activities    169        SPO CHI
8.     Retrieve a portion  or all  of the stream     and return it as an MCdata object    if  errorOccured   throw new MCcallbackCannotComplyException               MCdimseMessage msg     non null reference  MyStreamHandler streamHandler   new MyStreamHandler       try    msg streamIn 0x00080000  0x0008FFFF   MCtransferSyntax ExplicitLittleEndian   streamHandler      catch  MCexception e                streamHandler is an instance of MyStreamHandler  a class that implements  the MCdataSource interface  The MCdataSource interface requires a  provideData method that retrieves the stream data a block at a time and  returns it to the Merge DICOM library  This call converts only the attributes in  group 0008 of the stream supplied by your MyStreamHandler callback class and  places them in the message identified by msg  It is important that the transfer  syntax specified in this call is identical to that used to create the stream or the  call will fail with an error          The same kind of performance issues apply in the callback classes discussed    when retrieving pixel data  Namely  your settings of LARGE_DATA_STORE and    OBOW BUFFER SIZE should take into consideration the capabilities of your      platform   Performance Tuning    Message streams can be very valuable to your application for debugging and  validation purposes  By writing DICOM message streams out to a binary file  you  have    compact and reproducible representation of a message  You can directly  examine the bin
9.     When set to YES  Merge DICOM will  interpret private transfer syntax 2 as  having its pixel data tag  7fe0 0010   being encoded as undefined length in  the same manner as the JPEG and  RLE transfer syntaxes are encoded     DEFAULT  NO    The DICOM standard has retired the  old ACR NEMA Initiator Name attribute  in command messages  To generated  such an attribute in command  messages  specify an initiator name    lt none gt  means do not put initiator  name in messages     DEFAULT   lt none gt     The DICOM standard has retired the  old ACR NEMA Receiver Name  attribute in command messages  To  generated such an attribute in  command messages  specify a  receiver name   lt none gt  means do not  put receiver name in messages     DEFAULT   lt none gt        195    SEND ECHO PRIORITY       SEND LENGTH TO END    SEND MSG ID RESPONSE       SEND RECOGNITION CODE      SEND RESPONSE PRIORITY       196    Section    DIMSE_PARMS  DIMSE_PARMS    DIMSE_PARMS  DIMSE_PARMS  DIMSE_PARMS    Description    The DICOM standard has retired the  message priority attribute in echo  command messages  To generated  such an attribute in command  messages  specify YES  To NOT use  message priority in echo messages   specify NO     DEFAULT  NO    The DICOM standard has retired the  old Group Length To End attribute in  command messages  To generate  such an attribute in command  messages  specify YES  If you do not  want to generate Group Length To   End  specify NO     DEFAULT  NO    The DICOM st
10.     aak 28  File Management Roles and Services                           sss 31  eroe 33  Using the Merge DICOM                                    34  Configuration  S 34    M RGE ii    Fiealthcare    Merge DICOM Toolkit      NET C     User s Manual    Initialization                          4444400  400        35  Application                                  35  System Profile                         a 42  Service Profile                     esses seen entrent ennt entren 44  Message Logging              ctiain einen ere                 44  iA ert                                                    45  MIGSCOMP E 46                                                        46  MMIC SOCIO em 47  gets                      47  TMC SVAN RES 48                           49  Developing DICOM Applications    51                            P              53  Library Constants                ttes iterare er deat deride dos 53  Exception Handling                                                              deren nce er nen        53  Library InttialiZ atio                   56  Releasing the library    ener nnne nnn 57  Getting the Assembly Version               cccceceeeececeeeeeceeeeeeeaeeeeeeeseeeesaeeeeaeseeeeeeaas 57  Releasing Native                     eene enne neret 57  Using the Merge DICOM log                      58  Capturing Log Messages in Your Application                                                    58  Registering Your                                    59  MCapplica
11.     deleteChildren       This method deletes all the child directory records  below this record     135    Merge DICOM Toolkit      navigating through a  DICOMDIR    MCdirRecord  MCdir Root    Adding and deleting  directory records    dirAddRecord  dirDeleteRecord    136    NET C  User s Manual    The following sections describe these methods and properties in further detail     Navigating the DICOMDIR    The MCdirRecord class provides routines for traversing the DICOMDIR  The  MCdir class has a property  Root  which returns an MCdirRecord instance which  is a placeholder for the parent of the root directory records within the DICOMDIR   This directory record in turn can be used to navigate through the root records of  the DICOMDIR and the remainder of the DICOMDIR     The first step in navigating a DICOMDIR usually involves getting the Root  property root of the DICOMDIR  From there the getFirstChild and  getNextChild are used to traverse lower level records referenced by a  particular record  When working with a specific directory record  the  RecordItem property can be used to get the MCitem associated with a specific  directory record  This MCitem instance can be used to access the attributes  within the directory record  The following code sample shows the use of these  routines        MCdir dir     Non null referenc  MCdirRecord rootRec   dir Root   MCdirRecord curRec    curRec   rootRec getFirstChild     while  curRec    null                            if  curRec Recor
12.     section in the Appendix B   Configuration Parameters  Also  see the    MC_Get_Association_Info     function in the Merge DICOM Reference Manual to learn about the  presentation contexts that are queryable by an application program     Refer to Table 27 for an example     Table 27  Example Presentation Context    Presentation Context Table    Abstract Syntax Transfer Syntax Role   Extended    Name UID Name List UID List   Negotiation    Computed 1 2 840 10008    DICOM 1 2 840 1000   SCP   None  Radiography 5 1 4 1 1 1 Implicit VR   Image Little Endian   Storage    DICOM 1 2 840 1000  Explicit VR 8 1 2 1  Little Endian    DICOM 1 2 840 1000  Explicit VR Big   8 1 2 2  Endian       Merge DICOM Toolkit uses mergecom app configuration settings to specify  presentation contexts shown above     SOP Specific Conformance    This section includes the SOP specific behavior  i e   error codes  error and  exception handling and time outs  etc  The information is described in the SOP  specific Conformance Statement section of PS 3 4  or relevant private SOP  definition      Transfer Syntax Selection Policies  Merge DICOM Toolkit uses the following policy when selecting a transfer syntax     e An SCU offers any transfer syntaxes which are defined in it s mergecom pro  file     M RGE 171    Healthcare    Merge DICOM Toolkit      172    NET C  User   s Manual    e The SCP prefers it   s native byte ordering  and will prefer explicit over implicit  VR     Network Interfaces    Physical Net
13.     the initialization file where they are used     Initialization File    The following parameters are recognized by Merge DICOM in the initialization    file     Table 28  Initialization file parameters    BLANK_FILL_LOG_FILE    Description    ergeCOM3   This parameter informs the toolkit    whether or not to expand the log  file to its maximum size on  initialization  Setting this value to     NO    will decrease the time spent  in the MC mclnitialization call but  increase the time spent doing  actual logging while the application  is running     DEFAULT  YES    ERROR MESSAGE lergeCOMs3   This parameter informs the toolkit  to log error messages    INFO MESSAGE               3   This parameter informs the toolkit  to log error messages           LOG_FILE_BACKUP       lergeCOMs3   This is the name of the Merge    DICOM message log  The file will  be  re  created by Merge DICOM  Toolkit  This parameter is ignored  by embedded toolkits     DEFAULT    merge log    rgeCOMS   This is a Boolean parameter that    tells Merge DICOM to create a  backup of the log file before  starting a new log  If  ON   any  existing log file is renamed with a  file extension of  Lnn where nn is  an integer number between 01 and  99     DEFAULT  OFF     M RGE    Healthcare    M RGE    Fiealthcare    LOG FILE LINE LENGTH    LOG FILE SIZE    LOG MEMORY SIZE    Section    lergeCOM3    M  MergeCOM3  MergeCOM3    User s Manual    Description    This option specifies the number of  characters that occur
14.    211  The default encoding of bulks and attributes with VR                                    212    viii M RGE    Healthcare    Merge DICOM Toolkit    NET C  User   s Manual       Overview    This User   s Manual is targeted toward the developer of medical imaging  applications using the Merge DICOM Toolkit    to supply DICOM network or  media functionality     Merge DICOM Toolkit  NET supplies you with a powerful and simplified interface  to DICOM  It lets you focus on the important details of your application and  immediate needs of your end users  rather than the often complex and confusing  details of the DICOM Standard     The goal of this manual is to give you basic understanding of DICOM  and a clear  understanding of the Merge DICOM Toolkit     The DICOM Standard    The DICOM  Digital Imaging and Communications in Medicine  Standard was  originally developed by a joint committee of the American College of Radiology   ACR  and the National Electrical Manufacturers Association  NEMA  to    facilitate  the open exchange of information between digital imaging computer systems in  medical environments         Since its initial completion in 1993  the standard has taken hold  More and more  products are advertising DICOM conformance  and more customers are requiring  it  DICOM has also been incorporated as part of a developing European  standard by CEN  as a Japanese standard by JIRA  and is increasingly  becoming an International Standard     DICOM Version 3 0 is compos
15.    Digital X Ray Image Storage     For  Presentation   Digital X Ray Image Storage     For  Processing   Digital Intra oral X Ray Image  Storage     For Presentation   Digital Intra oral X Ray Image  Storage     For Processing   Digital Mammography Image  Storage     For Presentation   Digital Mammography Image  Storage     For Processing   Haw Data Storage    Description    Verifies application level  communication between  DICOM application  entities  AE   s      Transfer of medical  images and related  standalone data between  DICOM application  entities  either over a  network or using  interchangeable media        11    Me    rge DICOM    Toolkit      NET C     Service Class    Services Description    RT Beams Delivery Instruction  Storage   RT Beams Treatment Record  Storage   RT Brachy Treatment Record  Storage   RT Dose Storage   RT Plan Storage   RT Image Storage   RT Structure Set Storage   RT Treatment Summary Record  Storage   RT lon Beams Treatment Record  Storage   RT lon Plan Storage   VL Endoscopic Image Storage   VL Microscopic Image Storage   VL Photographic Image Storage   VL Slide Coordinates Microscopic  Image Storage   VL Whole Slide Microscopy Image  Storage   Video Endoscopic Image Storage   Video Microscopic Image Storage   Video Photographic Image Storage   XA XRF Grayscale Softcopy  Presentation State Storage   X Ray Angiographic Image Storage   X Ray Radiofluoroscopic Storage   X Ray 3D Angiographic Image  Storage   X Ray 3D Craniographic Image  St
16.    Pegasus Imaging Corporation  Hwww jpg comH   picx6320 ssm   picx6420 ssm  required for deployments on 64 bit platforms   picx6520 ssm  picx6820 ssm    picx6920 ssm    Merge DICOM initialization file  This file contains  logging configuration and path names for the other  configuration files    mergecom pro Merge DICOM system profile  This file contains general  run time configuration options     mergecom app Merge DICOM application profile  This file contains  configuration information about the services supported  by the Merge DICOM application and information about  remote DICOM applications    mergecom srv Merge DICOM services file  This file contains  information about the services supported by Merge  DICOM Toolkit     mrgcom3 msg Merge DICOM message information file  This file  contains validation information for DICOM messages   This file is required if a non empty MCdataSet  MCitem   MCdimseMessage or MCfile object is constructed by  the application  or if any validate or validateAttribute is  called  or if an MCdir object is constructed     mrgcom3 dct Merge DICOM data dictionary file        M RGE 159    Fiealthcare    Merge DICOM Toolkit    NET C  User s Manual    Configuration Options    The majority of Merge DICOM Toolkit s configuration options can be used to  solve interoperability problems in the field  There are some options  however   that can be set before deploying a Merge DICOM application to help reduce  potential problems  These options are listed in T
17.    port on which the remote  DICOM system listens for  connections  The commonly  used port number is 104  This  default value may be overridden  by the requestAssociation  method of the MCassociation  class     HOST_NAME  lt remote_application_title gt    This parameter is the name of    M RGE    Fiealthcare    the remote host as it is known  to your TCP IP system  This  default value may be overridden  by the requestAssociation  method of the MCassociation  class  The parameters value  must be 1 to 19 bytes in length  with no embedded spaces   NOTE that a numeric internet  address may be used  e g    192 204 32 1       177    Parameter Section    SERVICE_LIST                 lt remote_application_title gt     Jser s Manual    Description    This parameter is the name of a  section in the application profile  which provides a list of services  for which local applications will  negotiate when attempting to  establish an association  This  is a default list  another list may  be specified in the  requestAssociation method of  the MCassociation class  The  parameters value names must  be 1 to 33 bytes in length with  no embedded spaces        The SERVICE_LIST section of the Application Profile is used to describe the  DICOM services that will be negotiated by the listed Application Entity  The  parameter values are text strings recognizable by the Merge DICOM toolkit   These strings are defined in detail in message txt  This file is located in the  mc3msg directory of your dis
18.   5  Traversing SR content tree and accessing Content Node attributes     The following code illustrates a reading sequence for the Key Object Document  generated above     private void ReadKO MCdataSet dataset             Create a new SR instance and fill it from the dataset   MCsructuredReport sr   new MCstructuredReport       sr Read  dataset        Print information from the root CONTAINER item   Console WriteLine   Document Title       sr RootItem ConceptName CodeMeaning      Console WriteLine  Template Id      sr RootItem TemplateId         Reading the first children as a CODE item   if  sr RootItem Children 0  is MCcodeItem       MCcodeItem codeItem   sr RootItem Children 0  as MCcodeItem   Console Write codeItem ContentItemType           Console WriteLine  codeItem ConceptName CodeMeaning     codeItem Code CodeMeaning      we             Reading the next children as a TEXT item  if  sr RootItem Children 1  is MCtextItem            MCtextItem textItem   sr RootItem Children 1  as MCtextItem    Console Write textItem ContentItemType            Console WriteLine  textItem ConceptName CodeMeaning    textItem Text              e          M RGE    Healthcare    157    Merge DICOM Toolkit               User   s Manual       Reading the next children as a IMAGE item  if  sr RootItem Children 2  is MCimageItem      MCimageltem imageItem   sr RootItem Children 2  as MCimageItem     Console Write imageItem ContentItemType            Console WriteLine   Sop Class       imageItem 
19.   If a log handler is registered the Library calls receiveLogMessage in the thread  that generated the message but the calls are synchronized by the Library so the  log handler does not have to deal with synchronization     Registering Your Application    Before performing any network or media activity  your application must register  its DICOM Application Title with the Merge DICOM Toolkit  This is done by  calling the getApplication factory method of the MCapplication class  The  getApplication method returns an MCapplication object that represents  your DICOM Application Entity  Note that if the getApplication method is  called more than once with the same argument  the same MCapplication  instance is returned     This DICOM Application Title is equivalent to the DICOM Application Entity Title  defined earlier  If your application is a server  this application title must be made  known to any client application that wishes to connect to you  If your application  is a client  your application title may need to be made known to any server you  wish to connect to  depending on whether the server is configured to act as a  server  SCP  only to particular clients for security reasons     For example  if your application title is             Query SCP   you would register  with the toolkit as follows        MCapplication myAE     myAE   MCapplication getApplication  ACME Query  SCP             MCapplication objects can be disposed    If you wish to disable your application and f
20.   MCdataSet ds     non null referenc  MyPDStoreCallback cb   new MyPDStoreCallback       cb file    MypixelDataFile    try    MCattribute attrib   d  attrib readBulkData  cb    catch  MCexception e           s MCdicom PIXEL DATA        ah    On making this call  the toolkit library will repetitively call the receiveData method  of the MyPDStoreCallback class until all the pixel data has been retrieved from  the attribute without any errors     Storing or    setting aside    Pixel Data a block at a time is especially useful for very  large Pixel Data and or on platforms with resource  e g   memory  limitations  In  this case  you would also want to set LARGE_DATA_STORE to the value FILE in  the Service Profile  so that Merge DICOM Toolkit will also maintain the pixel data  value stored in the attribute set in a temporary file                 Performance Tuning       96 M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    MCfileDataSink  MCstreamDataSink  MCmemoryDataSink    Get a value   s length    MCattribute ValueLength    Get a count of values    MCattribute Count    Attribute set report    list method    M RGE    Fiealthcare    If your application runs on a resource rich system  you should set  LARGE DATA STORE to the value MEM in the Service Profile  and Merge DICOM  Toolkit will keep the pixel data values in the attribute set stored in memory rather  than using temporary files  This should improve performance  Also  in this case  you may want your 
21.   MCdimseMessage objects contain command information attributes   MCcommandSet  and data set attributes  MCdataSet   MCfile objects contain  meta information attributes  MCfileMetalnfo  and data set attributes  MCdataSet      Constructing Message Objects  Network messages are encapsulated in MCdimseMessage objects     When you call the MCassociation read method  Merge DICOM returns a newly  constructed and populated MCdimseMessage object     When you use the MCdimseService class to send network messages  as  opposed to using one of the MCdimseService sub classes provided by Merge  DICOM Toolkit   you must construct an MCdimseMessage object  You have  several options available when you construct the new MCdimseMessage     Construct a message using a pre populated data set     One form of the constructor creates a MCdataSet object and a MCcommandSet  object that contain all of the attributes of a DICOM message that will be used for  the given serviceName and command  References to the created attribute sets  may be retrieved using the DataSet and CommandSet properties  Normally you  will only deal with the data set and the command set attributes will be set  automatically by Merge DICOM Toolkit     MCdimseMessage dm   uhort command   MCdimseService C STORE        String serviceName    STANDARD CT         M RGE    Healthcare    Merge DICOM Toolkit           Peformance Tuning    M RGE    Healthcare    NET C  User s Manua    dm   new MCdimseMessage  command  serviceName       The 
22.   Merge DICOM Toolkit    NET C  User s Manual       Appendix C  Writing a DICOM Conformance  Statement    Detailed below is a guideline for writing a DICOM conformance statement for  your application  Since the Toolkit is not an application  this section only gives an  outline of the DICOM services it supports  Responsibility for full DICOM  conformance to particular SOP classes rests with the application developer   since many of the requirements for such conformance lie outside the realm of the  Toolkit  For example  the high level behavior of Query Retrieve service class  SCUs and SCPs as defined in Part 4 of the DICOM standard  is implemented by  the application developer in conjunction with the toolkit functionality     Conformance Statement Sections    Implementation Model    The Implementation model consists of three sections     e       Application Data Flow Diagram which specifyies the relationship between  the Application Entities and the  external world  or Real World activities     e afunctional description of each Application Entity  and    e the sequencing constraints among them     Application Data Flow    As part of the Implementation model  an Application Data Flow Diagram is  included  This diagram represents all of the Application Entities present in an  implementation  and graphically depicts the relationship of the AE s use of  DICOM to Real World Activities as well as any applicable user interaction     The Merge DICOM Toolkit provides the core functiona
23.   dataSet setValue MCdicom PATIENTS SEX   F             156 M RGE    Healthcare    Merge DICOM Toolkit                  User s Manual    dataSet setValue MCdicom STUDY INSTANCE UID   1 2 3 4 5 6 7 100     dataSet setValue MCdicom SERIES INSTANCE UID   1 2 3 4 5 6 7 200     dataSet setValue MCdicom STUDY ID   345678       dataSet setValue MCdicom SERIES NUMBER   1     dataSet setValue MCdicom INSTANCE NUMBER   1     dataSet setValue MCdicom PERFORMED PROCEDURE CODE SEQUENCE  null    MCitem iteml   new MCitem  HIERARCHICAL SOP INST  REF MACRO     iteml setValue MCdicom STUDY INSTANCE UID   1 2 3 4 5 6 7 100     MCitem item2   new MCitem  HIERARCHICAL SERIES  REF MACRO     item2 setValue  MCdicom SERIES INSTANCE UID   1 2 3 4 5 6 7 200     MCitem item3   new MCitem  REF SOP         following UIDs are the same as used in the Row 8 item        item3 setValue  MCdicom REFERENCED SOP CLASS UID   1 2 3 4 1     item3 setValue  MCdicom REFERENCED SOP INSTANCE UID   1 2 3 4 5 1     item2 setValue  MCdicom REFERENCED SOP SEQUENCE  item3    iteml setValue  MCdicom REFERENCED SERIES SEQUENCE  item2    dataSet setValue  MCdicom CURRENT REQUESTED PROCEDURE EVIDENCE SEQUENCE   item1            return dataSet     Reading SR Documents    Reading SR Documents is done in a similar way to encoding  but in reverse  sequence     1  Reading a File or receiving a message object   2  Reading root level attributes    3  Creating a new MCstructuredReport object   4  Reading SR Content from the dataset   
24.   e g   store in a frame buffer  filter through decompression hardware   write to disk      without any overhead introduced by the MCdimseMessage  object     Using an Attribute Container in a Client Application    A client  SCU  application can register a MCattributeContainer object that will be  called repetitively as the attribute s value is transmitted over an association  during an MCdimseService class sendRequestMessage       sendResponseMessage call  During either of these calls  the attribute value  will be handled by your registered MCattributeContainer object before these calls  can return to your application  The MCattributeContainer class can also be used  by the client to specially manage OB OW OF data  e g   read from a frame buffer   filter through compression hardware or software  read from disk      without any  overhead introduced by the MCdimseMessage object           M RGE    Healthcare    Merge DICOM Toolkit    _NET C  User   s Manual    How to declare an  MCattributeContainer  class    Merge DICOM Toolkit  calls for   the attribute s   data length    Declaring an MCattributeContainer Class    The MCattributeContainer interface requires that your container class provide  five methods that will be called by the Merge DICOM library at different times  A  sample class declaration follows     public class MyContainer   MCattributeContainer     public uint provideDataLength MCattributeSet attribSet   Ctag tag          public MCdata provideData MCattributeSet at
25.   empty    item attribute set by providing  no parameter to the constructor  If you wish to have the item populated by  Merge DICOM with specific attributes  you supply an itemName parameter used  to identify the item  If the itemName is unknown to Merge DICOM a warning  message is logged and an empty MCitem object is constructed        MCitem emptyItem   new MCitem     MCitem myItem   new MCitem  REF  FILM BOX                Available item names are listed in the message txt file for attributes in  messages having a VR of SQ  The contents of each item are also listed in the  message txt file  Below are two excerpts of message txt  one showing a  reference to the Referenced Film Box Item  and the other the contents of that  item        BASIC FILM SESSION   N SET RQ             0008  0005 Specific Character set cs 3  Defined Terms  ISO IR 100  ISO  IR 101  ISO IR 109  ISO  IR 110   ISO IR144  ISO IR 127  ISO IR 126  ISO IR 138  ISO IR 148                                                    0008 0012 Instance Creation Date DA 3  0008 0013 Instance Creation Time      3  0008 0014 Instance Creator UID UI 3  0008 0016 SOP Class UID UI 3  0008 0018 SOP Instance UID UI 3  2000 0010 umber of Copies IS 3  2000 0020 Print Priority CS 3  Enumerated Values  HIGH  MED  LOW   2000 0030 edium Type CS 3  Defined Terms  PAPER  CLEAR FILM  BLUE FILM   2000 0040 Film Destination CS 3  Enumerated Values  MAGAZINE  PROCESSOR   2000 0050 Film Session Label LO 3  2000 0060 emory Allocation 26 3  200
26.   memory  This option is useful if the application  registers a custom log handler and no other  destination is selected           Please note that Error Msg type messages are always written to the LOG FILE     Capturing Log Messages in Your Application    You may want to capture log messages yourself  for example to integrate Merge  DICOM log messages into your application s logging scheme     Log Callback    addHandler  removeHandler  MClogHandler    MCI To do this  create a new class that implements the MClogHandler interface   oginfo    That interface requires you to provide a receiveLogMessage method that will be  called by Merge DICOM whenever it is logging a message  Information about  the logged message is passed to the receiveLogMessage method in an  instance of the MCloglnfo class     You must register your log handler using the addHandler method of the MClog  class  Once registered your MClogHandler class will be notified as messages  are logged  Multiple handlers can be registered at any given time  You can de   register a handler by calling the removeHandler method of the MClog class     58 M RGE    Healthcare    Merge DICOM Toolkit      Create an application  object  MCapplication  getApplication    AE titles should be  Unique on a network    M RGE    Fiealthcare    NET C  User   s Manual    Refer to the description of addHandler in the         Assembly Windows Help File   for more detailed information about controlling which messages will reach your  handler   
27.   vrAT Attribute Tag   vrCS Code String   vrDA Date   vrDS Decimal String   vrDT Date Time   vrFD Floating Point Single  vrFL Floating Point Double        5 Integer String   vrLO Long String   vrLT Long Text   vrOB Other Byte String  vrOF Other Float String    vrOL Other Long String  Note  this was a VR defined in a draft  supplement for DICOM that was never adopted         76 M RGE    Fiealthcare    Merge DICOM Toolkit    NET C  User s Manual    MCvr name Value Representation used for        vrUS Unsigned Short  vrUT Unlimited Text    Several Merge DICOM class methods make use of MCvr class references  Most  often  you will be using one of the static values in the MCvr class  which  encapsulate each of the standard DICOM Value Representations        MCvr The MCvr class provides some convenient methods  The ToString method is  overridden to return a 2 character string that represents this Value   ToString Representation  For example  using the MCvr field vrSQ  vrSQ toString returns   validateValue    SQ        The validateValue method can be used to validate the encoding of an  attribute according to the rules defined in DICOM     A number of other properties are also defined for MCvr that describe the  properties of a VR  These properties are detailed in the Windows Help file     Using the MCtag class    MCtag An MCtag object identifies a DICOM attribute  All class methods that require an  attribute identifier use the MCtag object for that identification  Note that in most  
28.   warning will be displayed  but the message will still be listed     The default transfer syntax is implicit little endian  the DICOM default transfer  syntax   If the transfer syntax is incorrectly specified  the message will not be  displayed correctly        M RGE    Fiealthcare    47    Merge DICOM Toolkit               User   s Manual    DICOM Message  Validation tool    limitations    mc3valid    The mc3valid utility validates binary message files according to the DICOM  standard and notifies you of missing attributes  improper data types  illegal  values  and other problems with a message  mc3valid is a powerful  educational and validation tool that can be used for the off line validation of the  DICOM messages your application generates or receives     The command syntax follows                    mc3valid   filename        w   i    s   serv        lt cmd gt     7 1    m    q    t  lt syntax gt       filename   Filename containing message to validate   e Display error messages only   w Display error and warning messages  default    T Display informational  error  and warning  messages   S   serv   Optional force the message to be validated  against service name  serv   used along with                  lt        gt  Optional force the message to be validated    against command name    cmd     used along with    P    s            Optional list and select possible  service command pairs   m Optional specify the input file as being a  DICOM file object      Optional disa
29.  3 456 78     HEADER2   PARAMETER 1  PARAMETER 2    4382   More text     Figure 9  Format of a configuration file    Each of the four toolkit initialization files follow the same format  The format of  the initialization files is the same format that is used by others in the industry   Configuration files are broken down into sections for easier organization and  grouping of parameters  Each section has a section heading enclosed in square  brackets  Next  parameters are defined by putting the parameter name to the left  of an equal sign and its initial value to the right  Zero of more spaces may  precede and follow the equal sign  Figure 9 illustrates the format of an  ini  file     Notice that parameter names are relative to their header sections  For example   PARAMETER 1 and PARAMETER 2 are defined twice in the above example  ini   file  But  since each is defined in a different section  they are considered different  entities                             Each of the four configuration files are discussed separately below  Only the key  configurable parameters are summarized here  For detailed descriptions of all  configuration files and their parameters  see Appendix D  Configuration  Parameters     34 M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    MERGE        environmental  variable needed only by  utility programs    Use MC mclnitialization  to provide  Initialization File location    DICOM AE Title    M RGE    Fiealthcare    Initialization 
30.  68    M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Negotiated Transfer Syntaxes    Dealing with transfer Merge DICOM Toolkit supports all currently approved standard and encapsulated   syntaxes DICOM transfer syntaxes  Encapsulated transfer syntaxes require compression  of the pixel data contained in the message  These messages can be sent and  received by the toolkit  A subsequent section describes how compression and  decompression can be done with the library  Encoding of this pixel data is also  discussed below     For DICOM Toolkit users  the toolkit allows for the negotiation of more than one  transfer syntax for a given DICOM service  This functionality is of most use for  applications supporting encapsulated transfer syntaxes  This functionality may be  disabled by use of the ACCEPT_MUTLPLE_PRES_CONTEXTS configuration value   In order to understand how it is implemented  a more in depth description of  DICOM association negotiation is required                    During association negotiation a client  SCU  application will propose a set of  presentation contexts over which DICOM communication can take place  Each  presentation context consists of an abstract syntax  DICOM service  and a set of  transfer syntaxes that the client  SCU  understands  The server  SCP  will  typically accept a presentation context if it supports the abstract syntax and one  of the proposed transfer syntaxes     As previously discussed  the abstract and transf
31.  Associations   MCassociation  o Association acceptors   MCacceptor  o Association requesters    MCrequester  o Association negotiation     MOCnegotiationInfo    McstorageNegotiation    MCqueryRetrieveNegotiation  MCproposedContext  MCproposedContextList  MCresultContext  MCtransferSyntax  MCtransferSyntaxList  ICOM Messages and Message Elements  DIMSE messages     MCabstractMessage       MCdimseMessage  Data Elements    MCdataElement  Data element identifiers   MCtag  DICOM Value Representation    MCvr  Attributes     MCattribute  Attribute representations    Age String   MCage  Date     MCdate  DateTime     MCdateTime  Time     MCtime  Person Name     MCpersonName  UID     MCinstanceUID  Patient Name Component Group   MCpnComponentGroup  o String Encoding    MCstringEncoder  o Attribute Collections   MCattributeSet     MCcommandaSet    MCdataSet     MCitem     MCfileMetalnfo                       0000 0    51    Merge DICOM Toolkit      NET C     User s Manual    DICOM message handling callbacks  o Data Sinks     MCdataSink interface    MCfileDataSink      MCmemoryDataSink    MCstreamDataSink  o Data Sources     MCdataSource interface  MCfileDataSource  MCmemoryDataSink  MCmemoryDataSink implements the  MCdataSink and MCdataSource interfaces      MCstreamDataSource  DICOM message validation  o MCvalidationError  o validate and validateAttribute methods of MCdataSet  MCfile and  MCdimseMessage classes  DICOM Service class Information  o MCsopClass  o MCfailedSoplnfo  o McCre
32.  Breast   would mean that hardcoded values  shall be used for that Concept Name  Some template items don t have DT or EV  abbreviation and just specify the hardcoded values     Abbreviations The following abbreviations are used in template definitions     used in templates      e EV Enumerated Value    values for are provided in the brackets     e DT Defined Term    values are provided in the brackets     e BCID Baseline Context Group ID     identifier that specifies the suggested  Context Group  The suggested values can be found in the DICOM Part 16  and identified by a Context ID provided in the brackets     e DCID Defined Context Group ID     identifier that specifies the Context Group  for a Coded Value that shall be used  The values can be found in the DICOM  Part 16 and identified by a Context ID provided in the brackets     150 M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    M RGE    Healthcare    e BTID Baseline Template ID     identifier that specifies a template suggested  to be used in the creation of a set of Content Items  The referenced template  can be found in the DICOM Part 16 and identified by a Template ID provided  in the brackets        DTID Defined Template ID     identifier that specifies a template that shall be  used in the creation of a set of Content Items  The referenced template can  be found in the DICOM Part 16 and identified by a Template ID provided in  the brackets     Value Multiplicity  VM     The VM field indicat
33.  COMMITMENT PUSH  SCP                                  In this case  the  SCU Service List  supports the Storage Commitment  Push SOP class as an SCU        the  SCP  Service List  supports the  Storage Commitment Push SOP class as an SCP  Merge DICOM will negotiate  the association based on the settings for these roles     M RGE    Healthcare             DICOM Toolkit    NET C  User s Manual    The role for a service can be defined as SCU  SCP  BOTH  or be undefined   Table 9 contains a complete listing of configurable roles for both requestors and  acceptors along with the resultant negotiated roles  Note that in some cases a  service will be rejected because the roles being negotiated do not match     Table 9  Negotiated Roles    Requestor   s Acceptor   s Requestor   s Acceptor   s  Configured Role Configured Role ALEG Ma Co   3                  SCU SCP SCU    SCU Rejected  SCP Rejected    SCU SCP    NOT DEFINED Rejected Rejected    SCP SCU    SCU SCP    NOT DEFINED SCP SCU  SCU Rejected    For detailed information about the content of the Application Profile  see  Application Profile in Appendix D  Configuration Parameters        M RGE 39    Fiealthcare    Merge DICOM Toolkit                User s Manual    40    Configuring  Asynchronous  Communications  Support    Configuring  Extended  Negotiation for  Clients    DICOM Asynchronous Communication    Merge DICOM also optionally supports DICOM Asynchronous Operations  Window Negotiation through service lists  The same se
34.  DCMR  which defines  the templates and context groups used elsewhere in the standard     Part 17 consolidates informative information previously contained in other parts  of the standard  It is composed of several annexes describing the use of the  standard     Part 18 specifies a web based service for accessing and presenting DICOM  persistent objects  e g   images  medical imaging reports      Figure 1 maps portions of the DICOM Standard dealing with networking to the  ISO Open Systems Interconnection  OSI  basic reference model  The  organization and terminology of the DICOM Standard corresponds closely with  that used in the OSI Standard     Merge DICOM Toolkit                User s Manual    Where to get the  DICOM Standard    Special Note     ISO OSI Layers DICOM Parts      Your DICOM Application    Service and Message    Application Definitions Parts 3  amp  4  N Message Exchange Part 7  gt   Encoding Parts 5  amp  6    Session  amp  Presentation DICOM Upper Layer    BN Protocol Part 8    Network  Data Link  amp  Physical    Network       Figure 1  The DICOM Protocol Stack    As a user of this toolkit  you should have access to the DICOM Standard  Merge  DICOM Toolkit takes care of most of the details of DICOM for you  However  the  standard is the final word  You will probably find Parts 2     6 most useful  The  DICOM Standard can be ordered from     NEMA   1300 N  17  Street  Suite 1847  Rosslyn  VA 22209  USA    http   medical nema org    The DICOM Standard is typ
35.  DICOM  File    Figure 17  Classes and Methods Used for Handling DICOM Media Files          readFile    readFileUpToTag    readFileBypassLargeData         MCdataSource          Constructing an MCmediaStorageService object    Each MCmediaStorageService instance is associated with an application entity   It is necessary to provide a reference to your AE s MCapplication object when  constructing an instance of the MCmediaStorageService        MCapplication myApp     non null referenc  MCmediaStorageService myMediaService   new  MCmediaStorageService  myApp          Reading Files    To read in the contents of a DICOM file for analysis or parsing you use one or  three methods available in the MCmediaStorageService class for reading DICOM  files  Each of the methods passes a reference to a class that implements the  MCdataSource interface  The callback class will actually read the file stream  from media     The three methods are     e readFile     This method calls your MCdataSource to retrieve the DICOM file  stream  It decodes the stream and populates the MCfileMetalnfo and  MCdataSet attribute sets that are contained in your MCfile object  If the  stream contains an attribute for which an MCattributeContainer instance has  been registered  the attribute s value is passed on to the  MCattributeContainer  rather than having Merge DICOM store the value        Capplication myApp     non null referenc       Cfile fileObj   new MCfile  FileName     CdataSource source   new  MCfileDat
36.  DICOM Service Parameter  STUDY_ROOT_QR_FIND  STUDY_ROOT_QR_GET  STUDY_ROOT_QR_MOVE  SUBJ_REFRACTION_MEASUREMENTS  SUBSTANCE_ADMIN_LOGGING    SUBSTANCE_APPROVAL_QUERY    SURFACE_SEGMENTATION  UPS_EVENT_SOP   UPS_PULL_SOP   UPS_PUSH_SOP  UPS_WATCH_SOP  VISUAL_ACUITY_MEASUREMENTS    VL_WHOLE_SLIDE_MICROSCOPY_IMAGE       VOI_LUT_BOX  XA_XRF_GRAYSCALE_SOFTCOPY_PS  XRAY_3D_ANGIO_IMAGE  XRAY_3D_CRANIO_IMAGE  XRAY_RADATION_DOSE_SR    BASIC_COLOR_PRINT_MANAGEMENT   META_SOP        BASIC  GRAYSCALE PRINT  MANAGEMENT   META SOP     DETACHED PATIENT MANAGEMENT META   META SOP     DETACHED RESULTS MANAGEMENT META   META SOP     G P WORKLIST MANAGEMENT META   META SOP     PULL STORED PRINT MANAGEMENT   META SOP     er s Manual    DICOM Service Class  Query Retrieve  Query Retrieve  Query Retrieve   Storage   Application Event Logging    Substance Administration  Query    Storage   Unified Procedure Step  Unified Procedure Step  Unified Procedure Step  Unified Procedure Step  Storage   Storage   Print Management  Storage   Storage   Storage   Storage    Print Management    Print Management    Patient Management    Results Management    Basic Worklist Management    Print Management       186    User   s Manual    Merge DICOM Service Parameter DICOM Service Class    REF_COLOR_PRINT_MANAGEMENT  META_SOP     REF_GRAYSCALE_PRINT_MANAGEMENT Print Management   META_SOP     STUDY_MANAGEMENT  META_SOP  Study Management    Transfer syntax lists are contained in the service lists  The following is a 
37.  DICOM message    This option reads in a configuration file  previously generated by mc3file  The  Service name and command for the message  need not be specified on the command line  because they are contained in   filename     Because multiple files generated with this  option are identical  mc3file assume only  one file should be generated  This  assumption can be overridden by specifying  a number on the command line    This option lists all the service command  pairs supported by mc3file  When  generating a message  this option can be  used instead of explicitly specifying the  Service name and command on the command  line  When specified alone in the command  line  the complete list of pairs is printed  out without pausing    This option allows the user to generate a  DICOM file  When generating the file  object  mc3fil ncodes the Fil   Meta Information    This option prevents mc3file from prompting  the user for correct service command pairs   It is a useful option when running the  program from a batch file    This option specifies the transfer syntax  the DICOM message generated is stored in   The default transfer syntax is implicit  little endian  The possible values for    syntax   are  il  for implicit little  endian   el  for explicit little endian   and  eb  for explicit big endian    This option allows the user to specify the  first eight characters of the names of the  DICOM message files being generated   mc3file will then append a unique count to  the end of
38.  FULL PROG HIER 25 27 JPEG Full Progression  Hierarchical   Process 25  amp  27     JPEG LOSSLESS HIER 28 JPEG Lossless  Hierarchical  Process 28    JPEG LOSSLESS HIER 29 JPEG Lossless  Hierarchical  Process 29    JPEG LOSSLESS HIER 14 JPEG Lossless  Hierarchical  First Order  Prediction  Process 14  Selection Value    1   Default Transfer Syntax for Lossless  JPEG Image Compression    JPEG 2000 LOSSLESS ONLY JPEG 2000  Lossless  JPEG 2000 JPEG 2000  Lossless or Lossy  JPEG LS LOSSLESS JPEG LS Lossless    JPEG LS LOSSY JPEG LS Lossy  Near Lossless     JPEG 2000 MC LOSSLESS ONLY JPEG 2000 Part 2 Multi component Image  Compression  Lossless Only     JPEG 2000 MC JPEG 2000 Part 2 Multi component Image  Compression    JPIP REFERENCED  JPIP REFERENCED DEFLATE            4 AVC H264 HP LEVEL 4 1 MPEG 4 AVC H 264 High Profile    Level 4 1            4 AVC H264 BDC HP LEVEL 4 1   MPEG 4 AVC H 264 BDcompatible High  Profile   Level 4 1       M RGE 187    Fiealthcare    Merge DICOM Toolkit               User s Manual    Merge DICOM Transfer Syntax Parameter Description    PRIVATE SYNTAX 1 Private transfer syntax 1 with the  characteristics specified by the  PRIVATE SYNTAX 1 LITTLE ENDIAN   PRIVATE SYNTAX 1 EXPLICIT VR   and  PRIVATE SYNTAX 1 ENCAPSULATED  configuration options     PRIVATE SYNTAX 2 Private transfer syntax 2 with the  characteristics specified by the  PRIVATE SYNTAX 2 LITTLE ENDIAN   PRIVATE SYNTAX 2 EXPLICIT VR   and  PRIVATE SYNTAX 2 ENCAPSULATED  configuration options 
39.  Healthcare    Performance  Tuning    catValuaEramMathad    137    Merge DICOM Toolkit                User s Manual    allocate a buffer the size of the chunk passed to it and copy the data into this  buffer for storage     The size of data returned by provideData will dictate how the image data is  stored  If the data is passed in chunks smaller than 28K  Merge DICOM Toolkit s  internal memory management code will be used  If the chunks are larger than  28K  malloc   will be used to allocate storage for the buffers  If large images  are being dealt with  it may be desirable to pass this data in chunks larger than  28K  so the memory is freed after processing has been completed for the image   This will keep the nominal memory usage of Merge DICOM lower  When  passing data in chunks less than 28K  it is recommended that sizes of 16K  20K   24K  or 28K be used  Using these size chunks will reduce the overhead in  storing the data     The library can also be directed to store data in temporary files  The    ARGE DATA STORE and LARGE DATA SIZE configuration options in the  mergecom pro file dictate when data is stored in temporary files  When the   ARGE DATA STORE option is set to FILE  data elements that are larger than  configured by the LARGE DATA SIZE option are stored in temporary files  The  size of buffer returned by provideData does not have an effect on memory usage                                                     Using Attribute Containers    Merge DICOM also suppli
40.  INFO 1   0x01   SERVICE 2   STUDY          QR MOVE   EXT NEG INFO 2   0x01                   In this case  the  SCU Service List  supports the Study Root Q R Find and  Move services  Both services have set a single byte of extended negotiation  information set to hexadecimal 0x01   In this case  this implies the Client  supports relational Queries and Moves   Multiple hexadecimal bytes can be set  in the service list by listing each byte in the format  0x00 0x01 0x02      Helated General SOP Classes and Service Classes    DICOM Supplement 90 defines a mechanism in association negotiation to  identify when a SOP Class is a customization of a generalized SOP Class  It  also defines a method to identify the service class of a SOP Class that is  proposed by an SCU  This allows flexibility in an SCP to support service classes  for which it supports the generalized version of a SOP Class  but does not  explicitly support the customized SOP Class  It also allows a mechanism to  easily make an SCP that supports all storage service class SOP Classes that are  proposed to it     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Related General SOP Classes can be supported in the application profile by  defining a service list containing the related general SOP Classes for a given  SOP class  and then assigning the service list to the SOP Class  The following  example shows how this is done      SCU SR General                                   SERVICES SUPPORTE
41.  Image Storage    Command  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE  C STORE    C STORE    N             Service   Ultrasound Multi frame Image Storage   Video Endoscopic Image Storage   Video Microscopic Image Storage   Video Photographic Image Storage   VL Endoscopic Image Storage   VL Microscopic Image Storage   VL Photographic Image Storage   VL Slide Coordinates Microscopic Image Storage  VL Whole Slide Microscopy Image Storage  XA XRF Grayscale Softcopy Presentation State Storage  X Ray Angiographic Image Storage   X Ray Radiofluoroscopic Image Storage   X Ray Radiation Dose SR Storage   X Ray 3D Angiographic Image Storage   X Ray 3D Craniofacial Image Storage    12 lead ECG Waveform Storage    Ambulatory ECG Waveform Storage    Arterial Pulse Waveform Storage   Basic Voice Audio Waveform Storage   Cardiac Electrophysiology Waveform Storage  General Audio Waveform Storage   General ECG Waveform Storage  Hemodynamic Waveform Storage   Respiratory Waveform Storage   Hanging Protocol Storage   Ophthalmic 8 bit Photography Image Storage  Ophthalmic 16 bit Photography Image Storage    Ophthalmic Tomography Image Storage    Command    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C
42.  PATIENT MANAGEMENT      GET           0008 0005 Specific Character set       CS       Condition  EXPANDED OR REPLACEMENT CHARACTER SET  USED  ISO IR 109  ISO IR 110   IR 138  ISO IR 148                      Defined Terms  ISO IR 100  ISO IR 101     ISO IR144  ISO IR 127  ISO IR 126  ISO                                                                                            0008 1110 Referenced Study Sequence SQ  Item Name s   REF STUDY   0008 1125 Referenced Visit Sequence SQ  Item Name s     0010 0010 Patient   s Name PN  0010 0020 Patient IDLO2   0010 0021 Issuer of Patient ID LO  0010 0030 Patient s Birth Date DA  0010  0032 Patient   s Birth Time       0010 0040 Patient   s Sex   5  Enumerated Values               0010 0050 Patient   s Insurance Plan Code Sequence SQ  Item Name s   PATIENTS INSURANCE PLAN CODE   0010 1000 Other Patient IDs LO  0010 1001 Other Patient Names PN  0010 1005 Patient s Birth Name PN  0010 1020 Patient s Size DS  0010 1040 Patient s Address LO  0010 1060 Patient s Mother s Birth Name PN  0010 1080 Military Rank LO  0010 1081 Branch of Service LO  0010 1090 Medical Record Locator LO  0010 2000 Medical Alerts LO  0010 2110 Contrast Allergies LO  0010 2150 Country of Residence LO  0010 2152 Region of Residence LO  0010 2154 Patient s Telephone Numbers SH  0010 2160 Ethnic Group SH  0010 21A0 Smoking Status CS  Enumerated Values  YES  NO  UNKNOWN   0010 21B0 Additional Patient History LT  0010 21  0 Pregnancy Status US  Enumerated Values  0001  
43.  PRIVATE   STUDY SERIES  VISIT  RESULTS  STUDY COMPONENT   FILM SESSION  PRIVATE   SERIES IMAGE  STORED PRINT  RT DOSE  RT STRUCTURE  SET  RT PLAN  RT TREAT RECORD  OVERLAY   MODALITY LUT  VOI LUT  CURVE  SR DOCUMENT   PRESENTATION  KEY OBJECT DOC   SPECTROSCOPY  RAW DATA  WAVEFORM     REGISTRATION  FIDUCIAL  VALUE MAP  ENCAP  DOC  PRIVATE    M RGE    Healthcare       File Management Services    M RGE    Healthcare    Directory Record Type    ENCAP DOC  TOPIC    VISIT   RESULTS  INTERPRETATION  STUDY COMPONENT  PRINT QUEUE   FILM SESSION   FILM BOX   BASIC IMAGE BOX    PRIVATE    Record Types which may be included in the next  lower level Directory Entity    PRIVATE    STUDY  SERIES  IMAGE  OVERLAY  MODALITY LUT   VOI LUT  CURVE  FILM SESSION  PRIVATE    PRIVATE   INTERPRETATION  PRIVATE  PRIVATE   PRIVATE   FILM SESSION  PRIVATE  FILM BOX  PRIVATE   BASIC IMAGE BOX  PRIVATE  PRIVATE   PRIVATE     Not applicable         The first row of this table specifies the directory records that can be contained  within the Root Directory Entity     File Management Roles and Services  Part 10 of the DICOM Standard specifies a set of file management roles and    services  There are five DICOM File Services  that describe the entire set of  DICOM file operation primitives     Table 7  DICOM File Services    DICOM File Services  M WRITE   M READ   M DELETE    M INQUIRE FILE SET    M INQUIRE FILE    Description  Create new files in a file set and assign them a file ID   Read existing files b
44.  Reference  1 n  MC Atleast one of  shall not be present Rows 8  9 and 10    shall be present          9      CONTAINS WAVEF Purpose of Reference 1 n MC  At least one of  ORM shall not be present Rows 8  9 and 10  shall be present  10   gt   CONTAINS COMPO  Purpose of Reference 1 n MC  At least one of  SITE shall not be present Rows 8  9 and 10    shall be present                                     The code below generates a valid DICOM KO object and illustrates how the  template is encoded using the Merge DICOM oolkit functions     M RGE 155    Fiealthcare    Merge DICOM Toolkit                User s Manual    private MCdataSet CreateKO         MCcontentItem item           Create a KEY OBJECT DOCUMENT    The template ID is 2010 and we used the  Best in Set     context ID from the CID 7010       MCsructuredReport sr   new MCstructuredReport   2010    MCcontainerItem Continuity SEPARATE   new MCbasicCodedEntry  113013    DCM    Best In Set               Skipping Row 2 and 3 of the template and encoding Row 4      The code is taken from the CID 7012           item   new MCcodeItem new MCbasicCodedEntry  113015    DCM     Series      new MCbasicCodedEntry  113011    DCM     Document Title Modifier      sr RootItem AddChild item  MCrelationshipType HAS CONCEPT MOD            Skipping Row 5 and 6 of the template and encoding Row 7     The code is taken from the CID 7012     The text value shall describe the image selection       item   new MCtextItem  Doctor s comments on selecti
45.  SERVICE 3   STANDARD CT  SERVICE 4     STANDARD CURVE  SERVICE 5     STANDARD MODALITY LUT  SERVICE 6     STANDARD OVERLAY  SERVICE 7     STANDARD SEC CAPTURE  SERVICE 8   STANDARD  US  SERVICE 9     STANDARD US MF  SERVICE  10   STANDARD VOI LUT  SERVICE 11     STANDARD NM    Query Service List  SERVICES SUPPORTED   2 4 Services in list  SERVICE 1   STUDY ROOT FIND  SERVICE 2   STUDY          MOVE                             Storage Service List  lists the storage services that will be requested   while  Query  Service  List  lists the type of query retrieve that will be  requested  These service names are the strings used in Merge DICOM Toolkit to  identify standard DICOM services  Any services listed must be defined in the  Service Profile  discussed below     Dynamic Service Lists You may also dynamically create service lists at run time  using the methods of   MCproposedContextList   the MCproposedContext and MCproposedContextList classes  as well as the  constructors for the MCproposedContextList class  This will be discussed in  more detail in the DEVELOPING DICOM APPLICATIONS section below        36 M RGE    Fiealthcare    Merge DICOM Toolkit                   User s Manual    Acme Store SCP        Your Application    Acme QR SCP    port  104    Figure 10  An example configuration of DICOM applications    Don   t forget  A service list also needs to be defined for each of your own server AE s  Even  though you do not need a section for your server AE Title  since it 
46.  STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE       M RGE    Healthcare    Service Command  Stereometric Relationship Storage C STORE  Detached Patient Management N GET  Detached Visit Management N GET  Detached Study Management N GET  Detached Study Component Management N GET  Detached Results Management N GET  Detached Interpretation Management N GET  Basic Film Session N CREATE  Basic Film Box N CREATE  Basic Grayscale Image Box N SET  Basic Color Image Box N SET  Autorefraction Measurements Storage C STORE  Keratometry Measurements Storage C STORE  Lensometry Measurements Storage C STORE  Subjective Refraction Measurements Storage C STORE  Ophthalmic Axial Measurements Storage C STORE    Ophthalmic Visual Field Static Perimetry Measurements Storage C STORE    Visual Acuity Measurements Storage C STORE    Media Storage Directory Storage C STORE          Merge DICOM Toolkit defines a C STORE command for the DICOMDIR  service even though it does not formally exist In the DICOM Standard     Finally  the DICOM file can be padded at the end with the Data Set Trailing  Padding attribute  FFFC  FFFC  whose value is specified by the standard to have  no significance     M RGE 27    Fiealthcare    Merge DICOM Toolkit                User s Manual    MCfile    Naming DICOM File Sets  and File ID s    MCdir    File Sets    DICOM Files must be stored on removable media in a DICOM Fil
47.  These concepts are discussed first     Application Entities    The DICOM Standard refers extensively to Application Entities  AE   s   An  application entity is simply a DICOM application  If your application interacts with  other applications on a network or with interchangeable media using the DICOM  protocol  it is an application entity     DICOM also refers to Service Class Users  SCU   s  and Service Class  Providers  SCP   s   An application entity is an SCU when it requests DICOM  services over a network and an SCP when it provides DICOM services over a  network  We will more often refer to the SCU as a Client and the SCP asa  Server  A single DICOM application entity can act as both a client and a server   This client server model is a powerful and omnipresent one in the world of  distributed network computing     Services and Meta Services    DICOM is formed around the concepts of Services and Service Classes  The  DICOM Standard specifies a set of services that can be performed over a  network  Some of the services can also be stored to interchangeable media   these are italicized in Table 1   As new services are introduced  the standard will  be further expanded  The standard also groups related services into a service  class  Table 1 lists the DICOM standard service classes and their component  services  The DICOM Standard actually refers to services as Service Object  Pairs  SOP   s  and meta services as Meta SOPs     When a particular collection of services in 
48.  Translation     Sein      e g   CODE  2VCXRPALAT   HAS  CONCEPT MOD  TEXT  Further  Explanation     Chest X Ray  Two  Views  Posteroanterior and Lateral      HAS PROPERTIES   HAS PROPERTIES Description of properties of the Source  Content Item     e g   CODE  Mass   HAS  PROPERTIES  CODE  anatomic  location   HAS PROPERTIES  CODE   diameter   HAS PROPERTIES   CODE  margin               146 M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C     Relationship Type Merge DICOM    Toolkit Definition    HAS ACQ HAS_ACQ_CONTEX  CONTEXT T    INFERRED FROM INFERRED_FROM  SELECTED FROM SELECTED_FROM    Content Item Identifier       Description    Has Acquisition Context  The Target  Content Item describes the conditions  present during data acquisition of the  Source Content Item     e g   IMAGE 36  HAS ACQ  CONTEXT  CODE    contrast agent    HAS ACQ CONTEXT  CODE    position  of imaging subject              Source Content Item conveys a  measurement or other inference made  from the Target Content Items   Denotes the supporting evidence for a  measurement or judgment     e g   CODE  Malignancy   INFERRED  FROM  CODE  Mass   INFERRED  FROM  CODE   Lymphadenopathy           e g   NUM   BPD   5mm   INFERRED  FROM  SCOORD      Source Content Item conveys spatial  or temporal coordinates selected from  the Target Content Item s      e g   SCOORD   CLOSED 1 1 5 10    SELECTED FROM  IMAGE 36      e g   TCOORD   SEGMENT 60   200mS   SELECTED FROM   WAVEFORM      Con
49.  a DICOM file format for the interchange of  medical information on removable media  This file format is a logical extension  of the networking portion of the standard  When an object instance that was  communicated over a network would also be of value when communicated via  removable media  DICOM specifies the encapsulation of these object instances  in a DICOM file     DICOM Files    DICOM File Structure A DICOM File is the encapsulation of a DICOM object instance  along with File   Meta Information  File meta information is stored in the header of every DICOM  MCfile file and includes important identifying information about the encapsulated object  MCfileMetalnfo instance and its encoding within the file  see Figure 7      File Preamble  128 byte optional extra padding attribute  FFFC  FFFC     Four byte DICOM Prefix      DICM       Each attribute identified by a Tag    2      WS    LL File Meta              Object Instance        7     V7   Byte Stream NN   Optional Padding Attribute          File Meta Info Attribute      Object Instance Attribute    Figure 7  A DICOM File    The file meta information begins with a 128 byte buffer available for application  profile or implementation specific use  Application Profiles standardize a  number of choices related to a specific clinical need  modality or application  and  are specified in Part 11 of the DICOM Standard  The next four bytes of the meta    N  N    M RGE    Healthcare    Merge DICOM Toolkit    NET    DICOM objects 
50.  amp  5  transfer  syntax     DEFAULT  1 2 840 10008 1 2 4 52    This value defines the UID for JPEG  Spectral Selection  Non Hierarchical   Process 6  amp  8  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 53    This value defines the UID for JPEG  Spectral Selection  Non Hierarchical   Process 7  amp  9  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 54       191    JPEG_FULL_PROG_NON_HIER_10_12  _SYNTAX    JPEG_FULL_PROG_NON_HIER_11_13    _ SYNTAX    JPEG_LOSSLESS_NON_HIER_14_SYNTAX    JPEG_LOSSLESS_NON_HIER_15_SYNTAX    PEG EXTENDED HIER 16 18 SYNTAX    JPEG EXTENDED HIER 17 19 SYNTAX    JPEG SPEC HIER 20 22 SYNTAX    JPEG SPEC HIER 21 23 SYNTAX    JPEG FULL PROG HIER 24 26 SYNTAX    192    Section    Description    This value defines the UID for JPEG  Full Progression  Non Hierarchical   Process 10  amp  12  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 55    This value defines the UID for JPEG  Full Progression  Non Hierarchical   Process 11  amp  13  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 56    This value defines the UID for JPEG  Lossless  Non Hierarchical  Process  14  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 57    This value defines the UID for JPEG  Lossless  Non Hierarchical  Process  15  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 58    This value defines the UID for JPEG  Extended  Hierarchical  Process 16  amp   18  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 59    This value defines the UID for JPEG  Extended  Hierarchical  P
51.  an requester  association     Association State    For a DICOM association requester application  an association is considered  active from the moment the requester receives a successful return from the  MCapplication requestAssociation call until it calls the MCassociation release  method or until the association is aborted by either the local requester or remote  acceptor application     For a DICOM association acceptor application  an association is considered  active from the moment the acceptor calls its accept method until the association  is released by the remote requester or until the association is aborted by either  the local acceptor or remote requester application     The Active property returns true if the association is currently active  Refer to  the MCassociation Active property description in the Assembly Windows Help  File for more detailed information about association states     Using the MCsopClass class    The MCsopClass class encapsulates the properties of a DICOM service  Merge  DICOM manages instances of the MCsopClass for each service defined in the  System Profile  mergecom srv   MCsopClass class has two static methods   getSopClassByName and getSopClassByUid  which can be used to retrieve  these Merge DICOM managed instances  These two methods take either the  service name  or a DICOM SOP Class UID  Both of these are defined in the  System Profile  mergecom srv      The MCsopClass has the following get methods  BaseClasses  Commands   Name  Numbe
52.  can be a big help     NET C  User s Manual    When a Merge DICOM Toolkit Application is first run  it reads in its configuration  files  usually named merge ini  mergecom app  mergecom pro  and  mergecom srv  Toolkit configuration is described later in this document  These  configurable parameters are maintained in ASCII files for easy modification   When modifying your configuration files  your application must be re run or the  library reinitialized for those changes to take effect     Binary Message Information and Data Dictionary Files    A great deal of the power of Merge DICOM Toolkit lies in its message handling  and message validation capabilities  Message Objects are what is  communicated between DICOM Application Entities  When your application  creates a DICOM message object  the library accesses a binary message info  file with information about that class of message  This info file describes to the  library what attributes to expect as part of that message and each attribute s  characteristics  Value Type  Conditions  and Enumerated or Defined Terms      Another binary file containing the data dictionary is also accessed by the library   The data dictionary contains other characteristics of attributes  Name  Value  Representation  and Value Multiplicity      Merge DICOM Toolkit gives you added flexibility  by not requiring your  application to make use of the message info file  Certain API calls allow you to  open messages without accessing the info files  This 
53.  chunks    in bytes of  OB OW OF data it should read in before either writing the data to a temporary file  or passing it to your Callback Class  Choosing a large number for   OBOW BUFFER SIZE means less time spent by your application process writing  to temporary files or making callbacks  but results in a larger process size  If you  need to use temporary files or callbacks  you should tune this parameter to  maximize performance within the constraints of your runtime environment              Another binary file supplied with the toolkit is the message info file  This file  contains binary encoded message objects and is accessed when an application  opens a message  Once open  these objects reside in memory  are    filled in    by  your application  and become a message object instance that can be exchanged  over the network  The message info file  along with the data dictionary file  also  make possible the powerful message validation capabilities of the DICOM  Toolkit  The message info file is a binary file supplied with your toolkit with the  default name of mrgcom3 msg  You also specify the location and name of the  message info file using the   5   INFO FILE parameter        43    Merge DICOM Toolkit      Capturing Network  Data    Items  MCitem    44               User s Manual    It is often useful to capture the raw data that is transmitted across the network to  help determine exactly what each side of an association is sending  Network     sniffer    programs are 
54.  class to send  network messages  you will not be required to construct a MCdimseMessage  object  Typically those DICOM service class specific classes require that your  provide a data set  MCdataSet  object only     MCdimseMessage Properties    The MCdimseMessage class contains several methods that can be used to  retrieve properties of the DIMSE message     Transfer Syntax Used    The TransferSyntax property returns an MCtransferSyntax object that  identifies the transfer syntax used to encode this message     Contained attribute sets    MCdimseMessage objects contain references to MCcommandSet and  MCdataSet objects  The CommandSet property returns the MCcommandSet  reference and the DataSet property returns the MCdataSet reference     The service and command used by the message    The Command property returns the command currently assigned to this message  and the ServiceName property returns the current DICOM service name  The  setServiceCommand method is used to assign a specifiC C   DICOM service  and command to the message     MCdimseMessage Command Set Properties    Normalized DICOM service classes make use of the N ACTION DIMSE service   That service requests that a specific action be performed by the peer DIMSE  service user  Each SOP class using the N ACTION service defines Action Type  IDs that identify a specific service  The ActionTyperd property can be used to  get or set the Action Type ID that was specified in the DIMSE message  This for  attribute  0000 100
55.  each of the proposed services  The NumberOfProposedContexts property  returns the number of services proposed by the association requestor     The Read Timeout Value    The ReadTimeout property returns the timeout value specified by the timeout  parameter of the last read method call for this association  If no read has been  called yet  zero  0  will be returned     M RGE    Healthcare    Merge DICOM Toolkit      RemoteHostName  RemotelpAddress  RemotePort    Acceptor  Requester    Active    All about SOP classes    getSopClassByName  getSopClassByUid    BaseClasses  Commands  Name  Number   Uid  BaseClass  MetaClass  Equals    M RGE    Healthcare    NET C     User   s Manual    The Remote Host   s Name and Address    Merge DICOM applications communicate with each other using TCP IP  The  Remot eHostName property returns the IP name of the remote application   s host  computer and the RemoteIpAddress property returns the IP address of the  remote application   s host computer and the RemotePort property retrieves the  port number that the remote system is using to listen for TCP IP connections     Association Role    MCassociation objects may be constructed as acceptors  those waiting for and  responding to DICOM association requests  or as requesters  those making  DICOM association requests   The Acceptor property returns t rue if this  MCassociation object represents an acceptor association and the Requester  property returns t rue if this MCassociation object represents
56.  in this file should NEVER be changed  Doing so may  compromise DICOM conformance  Before modifying any parameters  such as  time out  be sure to have a backup of the originally supplied mergecom pro file   Also  before modifying other parameters  you should consider contacting Merge  Healthcare for advice     M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C  User   s Manual    PDU size   The maximum PDU size is configurable with a minimum of 4 096 bytes   Application conformance statements specify the chosen PDU  Protocol Data  Units  size and any general rules governing the initiation of associations  Please    see the    System Profile    section of the Merge DICOM Reference Manual for  further information about configuring the PDU size     Extensions Specializations Privatizations    Standard Extended Specialized Private SOPs    Application conformance statements list extended  specialized  or private SOPs  that are supported     Private Transfer Syntaxes    This section describes private transfer syntaxes that are listed in the Transfer  Syntax Tables  See the System Profile section in Appendix B  Configuration  Parameters for details     173    174    User   s Manual       Appendix D  Configuration Parameters    This appendix describes each configuration parameter in detail  Information  contained in these tables is the parameter names  descriptions and sections  where it is contained  The parameters are listed alphabetically and organized by
57.  is finished  performing its network operations  Either the client or the server can also abort  the association in the case of some catastrophic failure  e g   disk full  out of                  memory    1  o Association Requested eo  2     Association Accepted  sn   3  ASSOCIATION  4  Association Released    Figure 5  A Successful DICOM Association    Messages  MCdimseMessage Once an association is established  services are performed by AE   s through the  MCcommandsSet exchange of DICOM Messages  A message is the combination of a DICOM  MCdataSet command request or response and its associated object instance  see Figure 6    Metem Messages containing command requests will be referred to as request  messages  while messages containing command responses will be referred to  as response messages   MCfile When a DICOM service is stored to interchangeable media in a DICOM File  the  MCdir structure of a DICOM File is a slightly specialized class of DICOM message     Media interchange is discussed in detail later  the only important thing to realize  for now is that much of what is discussed relating to DICOM Messages also  applies to DICOM Files     18 M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    MCsopClass    MCattributeSet  MCattribute  MCdataElement  MCtag  MCdicom    MCtag GroupNumber  MCtag ElementNumber    Value Representation  MCvr    M RGE    Fiealthcare    DICOM specifies the required message structure for each service command  pair  For 
58.  little more flexibility  by allowing you to add private attributes as long  as they are of value type 3  optional  and are documented in the conformance  statement     DICOM also allows you to define your own Specialized and Private Services   These should be avoided by most applications since they are non standard  add  complexity to your application  and limit interoperability     If you are significantly extending services or creating your own private services   you may need the Merge DICOM Toolkit Extended Toolkit to assist in defining  these services so that they can be supported by the toolkit     33    Merge DICOM Toolkit                User s Manual       Using the Merge DICOM Toolkit    You can use the Merge DICOM Toolkit  out of the box  by using its supplied utility  programs and sample applications  In this section we discuss how to configure  the toolkit and to use the utility programs  Later  we discuss how to develop your  own DICOM applications using the Merge DICOM  NET    Assembly     Configuration    Merge DICOM is highly configurable  and understanding its configuration files is  critical to using the library effectively  Four configuration files are used by Merge  DICOM  an initialization file  an application profile  a system profile  and a service  profile           The pound sign begins comment lines    Section Header ee       HEADER     PARAMETER_1    Section Parameters                   _   PARAMETER 2  PARAMETER 3    12345   This is some text   1 2
59.  log file is included below that  contains all three classes of messages  errors  warnings  and informational     Message Log Example     03 29 21 14 54 77 MC3 W   0010 1010   Value from stream had problem   03 29 21 14 54 78 MC3 W    Invalid value for this tag s VR   03 29 21 14 56 41 MC3 Read PDU Head  E  Error on Read Transport call  03 29 21 14 56 41 MC3 MCI nextPDUtype  E  Error on Read PDU Head call   6196  03 29 21 14 56 41 MC3 Transport Conn Closed Event  E  Transport  unexpectedly closed    6196  03 29 21 14 56 41 MC3 MCI ReadNextPDV  I  DUL read pdvs error  UL  Provider aborted the association    The first column contains the ID of the thread where the message was  generated  The next column contains the date and the time when the message  was generated     The toolkit synchronizes the logging internally  Each call to log a message will  block the calling thread until other pending calls are completed     See Using the Merge DICOM log file section for more details on logging     Utility Programs    The Merge DICOM Toolkit supplies several useful utility programs  These  utilities can be used to help you validate your own implementations and better  understand the standard     All these utilities use the Merge DICOM Toolkit C Run time Library and require  that you set your MERGE INI environmental variable to point to the proper  configuration files  as described earlier                  M RGE    Healthcare    45    Merge DICOM Toolkit               User s Manual    D
60.  long your process will  wait for a message before the read call times out and returns control to your  application code  The thread handling your association will be blocked during  this waiting period and the system processor will be available for other threads   Setting timeout to 0 is equivalent to polling  since read returns immediately   whether a message has been received or not  A timeout of  1 indicates wait  forever  or until a message arrives  before returning  An MCtimeoutException will  be thrown if the time expires before a message arrives     115    Merge DICOM Toolkit                User s Manual    Sending messages  sendRequestMessage    sendResponseMessage    Requesting  a DICOM service    Responding to a  DICOM service request    Using the MCdimseService    To send request messages you use the sendRequestMessage method of the  MCdimseService class  and to send response messages you use the  sendResponseMessage method  You should note  however  that you will  probably be using a sub class of the MCdimseService class and those derived    classes usually provide other methods to send messages  This section  describes the use of the MCdimseService class directly     You must relate each instance of the MCdimseService class with a specific  association by passing an MCassociation reference as a parameter to the class  constructor        MCassociation myAssoc     a non null referenc  MCdimseService myService   new MCdimseService  myAssoc         Using the sendReq
61.  not  aware of the UN VR    M RGE    Healthcare       NET C  User   s Manual    Configuration Option Description    IMPLEMENTATION_CLASS_UID The Implementation Class UID is used to  identify in a unique manner a specific class of  implementation  PS3 7 of DICOM states       The Implementation Class UID  is intended  to provide respective  each network node  knows the other s implementation identity   and non ambiguous identification in the event  of communication problems encountered  between two nodes   PS3 7 of DICOM  further defines how this UID should be  defined   different equipment of the same  type or product line  but having different serial  numbers  shall use the same Implementation  Class UID if they share the same  implementation environment  i e   software       IMPLEMENTATION VERSION The Implementation Version is intended to  distinguish between software versions of an  implementation  It should be set to the  version of the Merge DICOM application     UN VR    DICOM Supplement 14  Unknown Value Representation  became a part of the  DICOM standard on June 3  1997  This supplement added a new value  representation  UN  to the DICOM standard  It was developed to fix two related  holes in the DICOM standard     When standard or private attributes were received in an implicit value  representation  VR  transfer syntax  and the user does not have a knowledge of  the VR of the attributes  there is no way to represent the VR for these attributes  in an explicit VR tra
62.  on a line  within the merge log file     DEFAULT  78  MINIMUM  16  MAXIMUM  254    This is the number of 80 byte  records which will be created for  the log file  i e  the number of 80  character lines in the log file  If  BLANK_FILL_LOG_FILE is set to  YES  the file is initialized to all  binary zeros before the first  message is logged     DEFAULT  1000    This is the number of 80 byte  records which will be created for  the memory log  i e  the number of  80 character lines in the memory  file  Note that this option is ignored  when using the  NET Assembly     DEFAULT  1024     MERGECOM 3 APPLICATIONS   MergeCOMs   File containing the Merge DICOM  application configurations  MERGECOM_3_ PROFILE MergeCOM3    MERGECOM_3_SERVICES    NUM_HISTORICAL_LOG_FILES    MergeCOM3    MergeCOM3    File containing the Merge DICOM  system profile parameters    File containing the Merge DICOM  system service and message  definitions    This parameter informs the toolkit  of the number of historical log files  to keep  The valid range of  number for this parameter is 1   99   The historical log files are named  basename L01 to basename L XX  where basename L XX is the latest  log file  The basename is  determined by the LOG FILE  parameter  When the maximum  number of historical log files is met   the oldest log file is deleted and the  log files are renamed  Note that a  new log file is created each time  the library is initialized  This  parameter is only used when   LOG FILE BACKUP is se
63.  performance in different ways  The following is a summary of these options     ELIMINATE ITEM REFERENCES     This option improves the performance  of removeMessageValues mthod in MCdimseMessage  clear method in  MCattributeSet and removeFileValues method in MCfile  This option will  disable functionality within the toolkit that causes the toolkit to search all  currently open message objects for references to an item that is being freed  by one of these calls  This call is especially useful when your application  uses very large DICOMDIR files     PDU MAXIMUM LENGTH     This option sets the maximum sized PDU that  the toolkit will receive  If during association negotiation the maximum sized  PDU of the system negotiating with the toolkit application is larger than this  value  the PDU size will be limited to this value  Increasing this value  increases the amount of data that is passed to the TCP IP level  This may  increase network performance of the library     WORK BUFFER SIZE     This option specifies how the toolkit buffers data  before storing it or passing it to a user s callback class  Setting higher values  for this option will increase performance     TCPIP RECEIVE BUFFER SIZE     This option sets the TCP IP receive  buffer size  Higher values for this buffer generally will increase the network  performance of the toolkit for server  SCP  applications  This value should  also be slightly larger than the PDU MAXIMUM LENGTH to increase  performance  Setting this valu
64.  properties for the proposed context   The Abst ractSyntax property retrieves the abstract syntax name associated  with this proposed service  Note that this is equivalent to the SOP Class UID  used to identify the DICOM service     61    Merge DICOM Toolkit      clearNegotiationInfo  setNegotiationInfo  contains   getContext  ListName  GetEnumerator   Size   toArray    NET C  User s Manual    The SCProle property retrieves a code defining whether or not the application is  willing to perform the SCP role  and the SCUro1e property retrieves a code  defining whether or not the application is willing to perform the SCU role     The ServiceName property retrieves the name associated with this proposed  service  This is the name configured in the mergecom srv file     The TransferSyntaxList property returns the MCtransferSyntaxList object  which is a list of proposed transfer syntaxes for this service     MCproposedContextList properties    The MCproposedContextList class provides methods to retrieve properties of the  proposed context list  The clearNegotiationInfo method clears any  negotiation information that may have been set for a service  As a result  no  negotiation information will be used for this service when the library attempts to  establish an association with another DICOM application using this  MOproposedContextList list  This method call is treated as a no op if no  negotiation information is registered for the service     The setNegotiationInfo method is used t
65.  ratio or quality           M RGE    Healthcare    COMPRESSION_RGB_TRANSFORM  _FORMAT    CREATE_OFFSET_TABLE    DEFLATE_COMPRESSION_LEVEL    DEFLATE_ALLOW_FLUSH    DICTIONARY_ACCESS    M RGE    Fiealthcare    Section    MESSAGE_PARMS  MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS    Description    This parameter allows the user to  select the output format when doing  Lossy JPEG compression of RGB  images  The value can be set to  YBR_FULL or YBR_FULL_422 to  specify what photometric interpretation  Merge DICOM should compress into  when compressing RGB images     DEFAULT  YBR_FULL_422    This parameter specifies if an offset  table is created when  MC_Duplicate_Message is used to  compress a DICOM message or file  It  also specifies if an offset table is  created when the  MC_Set_Encapsulated_Value_From_  Function and  MC_Set_Next_Encapsulated_Value_F  rom_Function routines are used     DEFAULT  Yes    Allows the compression level of deflate  to be specified when using deflated  explicit VR little endian transfer syntax   0 is no compression  1 is fastest  and 9  compresses best     DEFAULT   1    Allows deflate to flush data  occasionally to limit buffering     DEFAULT  Yes    This parameter specifies whether or  not the DICOM dictionary is to be  loaded into memory  or accessed from  the dictionary file  FILE means access  information directly from the dictionary  file  MEM means load the dictionary  into memory and access it there     NOTE  This paramet
66.  remove space padding characters  from all text based attributes  This  removal will occur when the attribute is  encoded with one of the  MCattributeSet append  put or set  methods  or when the attribute is read  with one of the streaming or network  read methods     DEFAULT  No    When set to Yes  Merge DICOM will  return a comma character as the  decimal separator in a value when a  String value is requested in the  getFirstValue or getNextValue  methods for an attribute with a VR of  DS  FL  or FD  When set to No  a  period will always be returned for the  decimal separator  Note that DS  values will always be properly encoded  with a period in DICOM message  objects     DEFAULT  No       205    TEMP_FILE_DIRECTORY    UN_VR_CODE    WORK_BUFFER_SIZE      CAPTURE_FILE    206    Section    MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS    TRANSPORT_PARMS    Description    This parameter specifies the directory  in which temporary files should be  created  This parameter is used          if  LARGE_DATA_STORE   FILE  An  absolute or relative path may be  specified     DEFAULT        VR Code to use for attributes with  unknown VRs  This may be set to     OB    if an implementation does not  understand    UN        DEFAULT  UN  VALID VALUES  UN  OB    This parameter specifies the amount of  data that is buffered in the toolkit  before being stored internally or  passed to a user   s callback method   This option impacts the streamln   streamOut  sendRequestMessage   sendRespons
67.  service   0 3 52 09 00 7919 MC3 T5   0018 0050  VW  Invalid attribute for service   0 3 52 09 00 7919 MC3 T5   0018 0080  VW  Invalid attribute for service   0 3 52 09 00 7919 MC3 T5   0018 0081  VW  Invalid attribute for service   0 3 52 09 00 7919 MC3 T5   0018 0082  VW  Invalid attribute for service                                              108    M RGE    Healthcare    Merge DICOM Toolkit    _NET C  User s Manual       01  3 52 09 00 7919 MC3 T5   0018 0084  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3 T5   0018 0085  VW  Invalid attribute for service  01  3 52 09 00 7919          5   0018 0091  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3 T5   0018 1041  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3 T5   0018 1060  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3 T5   0018 1250  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3 T5   0018 5101  VE  Required attribute has no value  01  3 52 09 00 7919          5   0020 0032  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3   5   0020 0037  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3   5   0020 0052  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3 T5   0020 0060  VI  Unable to check condition   01  3 52 09 00 7919 MC3 T5   0020 1040  VW  Invalid attribute for service  01  3 52 09 00 7919 MC3 T5   0020 1041  VW  Invalid attribute for service  01  3 52 09 00 7919          5   0028 0006  VI  Unable to check condition   01  3 52 
68.  sharing the same MCdataSet object  The filename parameter provides  the name of the operating system file to be associated with the MCfile  object     Accessing the service and command properties    It the service and command for the MCfile object were not specified when the  object was constructed  they can be provided later  using the  setServiceCommand method  The service and command must be set if you  wish to use the validate method  The Command and ServiceName properties  can be used to retrieve these properties     myFile setServiceCommand  STANDARD            MCdimseService C STORE           String serviceName   myFile ServiceName   ushort command   myFile Command           Working with the contained file meta information    The File Meta Information  MCfileMetalnfo  encapsulated in the MCfile class  contains identifying information about the data set also encapsulated in a DICOM  file  The meta information consists of a fixed length 128 byte file Preamble  a  DICOM Prefix     DICM      followed by several DICOM attributes providing the  properties of the encapsulated data set   Refer to Part 10 of the DICOM  standard for more details   The contents of this object are maintained  automatically by Merge DICOM Toolkit  although the MetaInfo property of the  MCfile class returns a reference to its contained MCfileMetalnfo object  Using  that reference  you can call the methods it inherits from MCattributeSet        Get the file meta info attribute set  MCfileMetaInfo me
69.  the benefits of increased performance     Most of the discussions that follow pertain both to networking and media  interchange applications  only the Association Management  Negotiated Transfer  Syntaxes  and Message Exchange sections are networking specific  The last  two sections  DICOM Files and DICOMDIR are media interchange specific     Library Import    In order to access the classes of the Merge DICOM Toolkit you should use the  mergecom namespaces in your applications  This gives you visibility not only to  the public and protected classes  but it also provides visibility to the constants  contained in the MCdicom interface  The following namespaces are utilized by  the Merge DICOM  NET assembly     using Mergecom    using Mergecom Exceptions   using Mergecom Gen    using Mergecom  Logging        Library Constants    The MCdicom interface is generated from the Merge DICOM dictionary and  contains constant values for all of the attributes defined by the DICOM standard   A copy of the interface source file is included with the library  although you will  never have a need to actually compile the file     Exception Handling    Each of the Toolkit classes is documented in the Merge DICOM  NET     Assembly Help File  The exceptions that each class may throw are documented  there     Merge DICOM methods throw exceptions derived from MCexception class that  extend the System ApplicationException class     A special group of exceptions is MCruntimeException derived exceptio
70.  the duplicate method is utilized at a high level     MCdimseMessage msg     A non null uncompressed message  MCdimseMessage resultMsg     resultMsg   msg duplicate  MCtransferSyntax Rle  null   new MCrleCompressor           MCdimseMessage resultMsg2     resultMsg2   resultMsg duplicate   MCtransferSyntax JpegBaseline   new MCrleDecompressor      new MCstandardCompressor           The example starts with an uncompressed image  and creates a new message  that is RLE compressed with the duplicate method  It then calls duplicate again  to decompress the RLE image and recompress the image as JPEG Baseline     The following section describes the compressors and decompressor supplied by  Merge DICOM and how they must be utilized with MCabstractMessage duplicate     Merge DICOM Supplied Compressors and Decompressors    Merge DICOM supplies several implementations of compressors and  decompressors  Table 14 lists each of the Merge DICOM classes  if they  implement compression or decompression and what transfer syntaxes they  support     101    Merge DICOM Toolkit    _NET C  User s Manual    Table 14  Merge DICOM Supplied Compressor and Decompressors    Merge DICOM Class Type DICOM Transfer Syntaxes Supported  MCstandardCompressor Compressor JPEG Baseline  JPEG Extended  Process 2  amp  4   JPEG Lossless Non Hierarchical Process 14  JPEG 2000    JPEG 2000 Lossless Only    MCrleCompressor Compressor    MCstandardDecompressor   Decompressor   JPEG Baseline    JPEG Extended  Process 2  a
71.  the filename for each messag  being generated  The default value is   file  when creating a DICOM file and   message  when creating the format that  DICOM messages send over a network                                                     MC3File retrieves default values for attributes from the text file    default pfl         Unlike the  info pfl  and    diction pfl    files which are converted into binary files    default pfl  is used as a text file  It will first be searched for in the current  directory and then in the message information directory  This file contains default  values for all messages and for specific service command pairs  This file can be  modified to contain defaults specific for the user  although it is recommended that  a backup of the original be kept  If this file is modified  there are no guarantees  that the messages generated will validate properly        50    M RGE    Healthcare    Merge DICOM Toolkit      The Merge DICOM  Toolkit  NET     Assembly    M RGE    Fiealthcare    NET C  User   s Manual       Developing DICOM Applications    The Merge DICOM Toolkit  NET Assembly provides classes and interfaces that  represent all of the major components of the DICOM standard     e Utility and Initialization methods    MC  e DICOM constants  o                 e DICOM Applications  o Local applications    MCapplication  o Remote applications    MCremoteApplication  e Merge DICOM Logging    o MClog      MClogHandler      MCloglnfo   o MClogTime    e DICOM
72. 0  0500 Referenced Film Box Sequence 50 3  Item Name s   REF_FILM BOX   Item Name  REF FILM BOX   0008 1150 Referenced SOP Class UID UI 1  0008 1155 Referenced SOP Instance UID UT 1    To encode an item into an attribute of Value Representation SQ  treat the  attribute as a multi valued attribute  where each value is an MCitem object  This  means using an MCitem reference with the MCattributeSet addValue  setValue  or indexer  Similarly  the MCattributeSet indexer methods return MCitem objects  when you request the value of a sequence attribute        124    M RGE    Healthcare    Merge DICOM Toolkit      DICOM message objects  MCfile    MCdir  MCfileMetalnfo    M RGE    Healthcare    NET C  User   s Manua    The following sample code fragment gives an example of encoding a Pre   formatted Grayscale Image Item into a sequence           MCitem myItem   new MCitem  PREFORMATTED GRAYSCALE IMAGE                               MCdataSet ds      non null reference to th     data set we are building       myItem MCdicom PIXEL ASPECT RATIO  0     1    myItem MCdicom PIXEL ASPECT RATIO  1     1                                 encode other item attributes here             now add the item to the sequence     ds MCdicom PREFORMATTED GRAYSCALE IMAGE SEQUENCE  0     myItem                                   DICOM Files    Maintaining a DICOM file set is a matter of maintaining various DICOM files and  a single DICOM directory file  DICOMDIR      DICOM media files are encapsulated in the MCf
73. 0002  0003  0004   0010 21D0 Last Menstrual Date DA  0010  21F0 Patient   s Religious Preference LO  0010  4000 Patient Comments LT  0038 0004 Referenced Patient Alias Sequence 50  Item Name s   REF_PATIENT_ALIAS   0038 0050 Special Needs LO  0038 0500 Patient State LO    1      2    NWN         CO CO CO CO CO CO CO WW CO CO CO CO CO CO CO       w w       CO CO                106    M RGE    Healthcare    Merge DICOM Toolkit                   What validation can do for  you       and what validation cannot  do for you    An example       M RGE    Fiealthcare    User s Manual    While Merge DICOM validation is not foolproof  it is very useful and will catch  many standard violations  It validates the following     That the value assigned to an attribute is appropriate for that attributes VR   That all value type 1 attributes have a value  and that value is not null   That all value type 2 attributes have a value  and that value may be null     That a specified set of conditional attributes  value type 1C or 2C  are  validated as value type 1 or 2 attributes when the specified condition is  satisfied  Merge DICOM supports a number of conditional functions that are  straightforward to validate  Not all conditions can be validated by the toolkit  and those that cannot need to be checked by the application itself     That an attribute does not have too many or too few values for its specified  value multiplicity     That an attribute that has enumerated values does not have a valu
74. 09 00 7919 MC3   5   0028 0030  VW  Invalid attribute for service  01  3 52 09 00 7919          5   0028 0034  VI  Unable to check condition   01  3 52 09 00 7919 MC3   5   0028 1101  VI  Unable to check condition   01  3 52 09 00 7919 MC3   5   0028 1102  VI  Unable to check condition   01  3 52 09 00 7919 MC3   5   0028 1103  VI  Unable to check condition   01  3 52 09 00 7919          5   0028 1201  VI  Unable to check condition                                     Notice in this log      that all warnings and informational messages        also  logged  This is always the case  although the first violation returned to the  application was an error because MCvalidationLevel Full was specified   The message log agrees in that the first VE  Validation Error  logged is for the  attribute Patient   s Age  0010 1010   The log states that the message contains   41v     as the value for this attribute  Part 6 of DICOM clearly states that this  attribute has a value representation of AS  Age String  and part 5 states that for  this VR the value should have a leading zero and be represented as    0417      There is also one other error flagged in this message  The required attribute  View Position  0018 5101  had no value        The Overhead of Validation    DICOM attribute set validation does involve processing overhead  The most  significant overhead is in the accessing of the message info files  and  significantly less overhead is involved in actually validating the contents of th
75. 10008 is the organization ID     166 M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C  User   s Manual    Obtaining a UID    The  lt root gt  portion of the UID should be registered by an organization that  guarantees global uniqueness  The American National Standards Institute  ANSI   is the registration authority for the United States  Other national registration  authorities exist for nations throughout the world such as IBN in Belgium  AFNOR  in France  BSI in Great Britain  DIN in Germany  and COSIRA in Canada     Obtaining a UID From ANSI    ANSI is the registration authority for the US for organization names  i e     lt root gt   under the global registration process established by the International  Standards Organization  ISO  and the International Telegraph and Telephone  Consultative Committee  CCITT   ANSI   s registration service conforms with  CCITT X 660 and ISO IEC 9834 1  The ANSI organization name registration  service assigns one name component to the hierarchy defined by CCITT and  ISO IEC     An organization seeking registration may do so by submitting a Request for  Registration application form along with a fee  as of August 1996 the fee is   1 000  to the Registration Coordinator  The Request for Registration application  form can be obtained from ANSI by use of the following information     American National Standards Institute  11 West 42    Street   New York  New York 10036   TEL  212 642 4900   FAX  212 398 0023    167  
76. 19  Writing the provideData                                   120  Writing the receiveDataLength method                                                        121  Writing the receiveData                                121  Writing the receiveMediaDataLength method                                              122  Registering Your                                                          122  Releasing Your                                     2                 123  Sequences Of Items    certet          e ra eu 123  DICOM ngo 125  Constructing a new MCfile Instance                          126  Construct an MCfile object with a pre populated data set                            126  Construct an MCfile object with an empty data                                            126  Convert an MCdimseMessage object to an MCfile object                           127  Accessing the service and command                                                          127    M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Fiealthcare    NET C  User s Manual  Working with the contained file meta                                                             127  Accessing the File                                       128  Working with the contained data                                                              128  Resetting the MCfile object    128  File validation    rm tte nett ed eee eee 129  The MCfile stream                                            129  Setting the file transfer synt
77. 69 4 960070 844 1026926027    44 lt  Attribute gt     lt  Item gt    lt  Attribute gt    lt Attribute Tag  00090010  VR  LO  Name  Private Creator   Code  PCode  PrivateCode  Length  11  gt SAMPLE   PCODE lt  Attribute gt    lt Attribute Tag  00091010  VR  LO  Name  Private   PCode  SAMPLE PCODE  Length  6  gt Valuel lt  Attribute gt                                         M RGE 211    Healthcare    Merge DICOM Toolkit               User s Manual     lt Attribute Tag  00091015  VR  UN  Name  Private   PCode  SAMPLE PCODE  Length  6  gt INAgNAEy lt  Attribute gt      lt Attribute Tag  00100010  VR  PN  Name  Patient s Name   Length  28  gt Last First lt  Attribute gt                      Attribute Tag 2 7FE00010  VR  OW  Name  Pixel Data    Encoding  Base64    Length  262144  gt HQAABgMAAAIHBAM       lt  Attribute gt    lt  DataSet gt       DcmFile            The default encoding of bulks and attributes with VR  UN         lt  xml version  1 0  encoding  utf 8   gt    lt DcemFile gt    lt FileMetaInfo Service  STANDARD_SEC_CAPTURE  Command  C_STORE_RQ  gt     Attribute Tag  00020001  VR  OB  Name  File Meta  Information Version  Length  2  gt 00 01 lt  Attribute gt                   Attribute Tag  00020016  VR  AE  Name  Source   Application Entity Title    Length  15   2MERGE STORE SCP   Attribute     lt  FileMetaInfo gt    lt DataSet Service  STANDARD_SEC_CAPTURE    Command  C_STORE_RQ    TransferSyntax  1 2 840 10008 1 2 1  gt     lt Attribute Tag  00080008  VR  CS  Name  I
78. 8      The AffectedSopClassUid property sets or gets the DICOM Affected SOP  Class UID associated with the DIMSE message  It is retrieved from attribute   0000 0002  in the message   s command set     The AffectedSopInstanceUid property sets or gets the DICOM    Affected  SOP Instance UID    associated with this DIMSE message  It is retrieved from  attribute  0000 1000  in the message   s command set     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Attributeldentifiers    CompletedSubOperations    ErrorComment    Errorld    EventTypeld    FailedSubOperations    Messageld    MessageldBeingRespondedTo    MessagePriority    MoveDestination    MoveOriginator    MoveOriginatorMessageld    M RGE    Healthcare    DIMSE services using N GET operations use a command set field to provide an  attribute tag for each of the attributes applicable to the N GET operation  The  AttributeIdentifiers property sets or gets an array of unsigned integer  values  each of which is an attribute tag number  This will set or get attribute   0000 1005  in the command set     The DIMSE services that use C GET or C MOVE operations place the number of  C STORE sub operations completed in their response messages  The  CompletedSubOperations property gets or sets that value from attribute   0000 1021      Many DIMSE services provide for a field to be returned in response messages  that describes an error that may occur while servicing a DIMSE request  The  ErrorComment property 
79. 8 bit data  we always treat pixel data  7    0 0010  as OW  The pixel data  must be assigned as byte swapped        recently upgraded to a new release of the Merge DICOM Toolkit  Since this  upgrade  exceptions are being thrown by the MCattributeSet attribute  encoding methods  This code worked before the upgrade  What is causing  these problems     The Merge DICOM data dictionary changes from release to release  In some  cases  the identification number for a particular message type changes   When upgrading  if you do not change all of the data dictionary files  this  error will occur  The following files should be upgraded with each release     mergecom srv  mrgcom3 msg    mrgcom3 dct    165    Merge DICOM Toolkit                User s Manual       Appendix B  Unique Identifiers  UIDs     UIDs provide the capability to identify many different types of items  The purpose  of UIDs are to guarantee the uniqueness of the these different types of items   DICOM uses UIDs to uniquely identify items such as SOP classes  image  instances and network negotiation parameters  Part 5  Section 9 along with  Annexes B and C of the DICOM Standard discusses how UIDs are composed   encoded and registered     Summary of UID Composition    A UID is composed of a number of numeric values as defined by ISO 8824  The  following is a typical example of a UID     1 2 840 10008 2 45 1 12345    A UID is composed of two parts  a   root   and a   suffix   and has the  following form     UID    lt root 
80. AULT        4       TIhese options allow for non standard DICOM operations  Such exceptions   if used  should be noted in your DICOM conformance statement      Performance Tuning    Service Profile    The Service Profile is generated by Merge OEM and contains DICOM standard  services and commands and is a useful reference  along with the message txt  file mentioned previously  to find the Merge DICOM names for the standard  DICOM services and items  It is used by the library to negotiate the proper SOP  Class UIDs and to access the binary dictionary and message information files  when creating instances of message objects and validating messages     In most cases  it will not be necessary to modify the Service Profile  However  if  you are using an extended toolkit to create your own private services  you will  need to add specifications for these private services to the Service Profile  See  the Merge DICOM Toolkit  Extended Toolkit Manual for further details     The location of the Service Profile is provided by the MERGECOM_3_SERVICES  parameter of the  MergeCOM3  section of the MERGE  INT file                    Remember  the Service Profile is GENERATED by the Merge DICOM Profile  Database Utilities at Merge OEM  Unless you are absolutely confident about  changes being made  DO NOT CHANGE THE CONTENTS OF THIS FILE     M RGE 209    Healthcare    Merge DICOM Toolkit    _NET C  User s Manual    The Service Profile contains the following sections     Table 34  Service profil
81. BR_FULL or  YBR_FULL_422 data                       Table 16  JPEG Extended Supported Photometric Interpretations and Bit Depths    JPEG Extended  Process 2  amp  4     Photometric MONOCHROME 1 RGB   YBR FULL 422  Interpretation MONOCHROME2 YBR FULL     mese  gt   v      s                  fe  s            serene     Tr   gt        The MCtransferSyntax JpegLosslesHier14 transfer syntax is UID  1 2 840 10008 1 2 4 70  JPEG Lossless  Non Hierarchical  First Order Prediction   Process 14  Selection Value 1    Default Transfer Syntax for Lossless JPEG  Image Compression  and uses Pegasus libraries 6220 6320  Table 17 details the  photometric interpretation and bit depths supported by the standard compressor  and decompressor for this transfer syntax  The standard compressor does not  do a color transformation to RGB data when compressing with   JPEG LOSSLESS HIER 14  The Photometric Interpretation tag should be left  as RGB in this case                 103    Merge DICOM Toolkit      104    NET C  User   s Manual    Table 17  JPEG Lossless Supported Photometric Interpretations and Bit Depths    JPEG Lossless Non Hierarchical Process 14    Photometric MONOCHROME 1 RGB  Interpretation MONOCHROME2    The MCtransferSyntax Jpeg2000 transfer syntax is UID 1 2 840 10008 1 2 4 91   JPEG 2000 Image Compression  and uses Pegasus libraries 6820 6920 for lossy  or lossless  Table 18 details the photometric interpretation and bit depths  supported by the standard compressor and decompressor f
82. CALIONS                                      169  SOP ClASSES                                  170  Number of                            irit renean reete ere Doce 170  Asynchronous NatUle      eec eer tec rece tte               Eug 170  Implementation Identifying                                  170  SOP Specific Conformance                      ssssssssssseeeee eene 171  Transfer Syntax Selection                                      171  Physical Network                                 172  IPv4 and IPv6                         4  24  0 0      0000 nennen 172   AE Title Presentation Address                                                                     172  Configurable Parameters                     sess enne enne 172   a Blur c                                           173  Standard Extended Specialized Private                                                   173  Private Transfer Syntaxes                   sss enne 173  Appendix D  Configuration                                       174  Initialization                      174  Application Profile    reise ei                                  ok 176          immi p Em 176  alui LE                                      177  System Profile siderinda               indes deed                   iGavel 188  Service             e                                 aA 209  Appendix E  XML Structure      et erret hence eere Pa era eu        211  Base64 encoding of bulks and attributes with VR UN                                  
83. CCEPT  STORAGE  SERVICE CONTEXTS configuration option is set to  Yes  Merge DICOM will accept any proposed SOP class that is defined as  supporting the Storage Service Class                                When the ACCEPT RELATED GENERAIL  SERVICES configuration option is set  to Yes  Merge DICOM will accept any SOP class proposed if the SCP supports in  its service list any of the related general SOP Classes defined for a SOP Class  proposed                             M RGE 41    Healthcare    Merge DICOM Toolkit      Nothing works without the  license number    NET C  User s Manual    System Profile    The Merge DICOM System Profile  usually called mergecom  pro  contains  configuration parameters for the DICOM Toolkit Library itself  The name and  location of this file are specified in the  MergeCOM3  section of the Merge  DICOM initialization file     Many of these parameters should never need to be modified by the user   including low level protocol settings such as time outs  Only the parameters that  should be understood by every user of the toolkit are discussed here  fora  discussion of all parameters  see System Profile in Appendix D  Configuration  Parameters     Most importantly  you must place the license number you received when you  purchased the toolkit in the  ASSOC_PARMS  section of the system profile  If the  license you received with your toolkit was 83F3 3F26 FD6E you would need to  set itin the  ASSOC_PARMS section as follows      ASSOC_PARMS   LICENSE  
84. CCEPT DIFFERENT  VERSION      ACCEPT MULTIPLE PRES CONTEXTS    EXPLICIT BIG ENDIAN SYNTAX    EXPLICIT LITTLE ENDIAN SYNTAX    HARD CLOSE TCP IP CONNECTION    IMPLEMENTATION CLASS UID    IMPLEMENTATION VERSION    DEFLATED EXPLICIT  LITTLE ENDIAN     SYNTAX    190    Section    ASSOC_PARMS  ASSOC_PARMS    ASSOC_PARMS  ASSOC_PARMS    ASSOC_PARMS    ASSOC_PARMS  ASSOC_PARMS    ASSOC_PARMS    Description    If set to NO  the remote system must  specify the local  IMPLEMENTATION_VERSION when  requesting an association  If set to  YES  a different implementation  version may be used     DEFAULT  YES    If set to YES  SCP applications will  allow multiple presentation contexts to  be negotiation for a single DICOM  service  If set to NO  an SCP will only  accept a single presentation context  for a DICOM service     DEFAULT YES    This value defines the UID of the  explicit VR big endian transfer syntax     DEFAULT  1 2 840 10008 1 2 2    This value defines the UID of the  explicit VR little endian transfer syntax     DEFAULT  1 2 840 10008 1 2 1    This parameter specifies how TCP IP  connections are closed by the toolkit   When set to YES  TCP IP connections  are instantaneously closed with a RST  packet  When set to NO  TCP IP  connections are closed gracefully with  a FIN packet  Note  that in the NO  case the toolkit must wait for an  operating system dependent amount  of time for the response to the FIN  packet     DEFAULT  YES    The DICOM Implementation Class UID   as specifi
85. D   2  SERVICE 1   STANDARD ENHANCED SR  SERVICE 2   STANDARD COMPREHENSIVE SR                          SCU DX General   SERVICES SUPPORTED   1  SERVICE_1   STANDARD_DX_PRESENT                                SCU_Service_List                                                                                                  SERVICES_SUPPORTED   3  SERVICE_1   STANDARD BASIC  TEXT SR  REL GENERAL 1   SCU  SR General  SERVICE CLASS 1   1 2 840 10008 4 2  SERVICE 2   STANDARD IO PRESEN  REL GENERAL 2   SCU DX General  SERVICE CLASS 2   1 2 840 10008 4 2  SERVICE 3   STANDARD CT  SERVICE CLASS  3   1 2 840 10008 4 2  In this case  the SCU  SR General service list contains the related general SOP          Classes for the STANDARD BASIC TEXT SR service  The REL GENERAL 1  option points to the service list to use as the related general services for  SERVICE 1                                The above example also shows how the service class can be defined for each  SOP Class within a service list  For instance  SERVICE CLASS  3 in the above  example specifies the service class for SERVICE 3  In this case  the UID for the  Storage Service Class as defined in Supplement 90 is used                    The service lists above are only utilized by SCU applications  For SCP  applications  there are several configuration options that define how Merge  DICOM will negotiate an association when related general SOP Classes are  included or the Service Class is included for a SOP Class     When the A
86. DEFAULT     mc3msg mrgcom3 msg    This parameter specifies how the  toolkit will validate a single NULL value  in a type 3 attribute with VM  1     DEFAULT  ERR    This parameter specifies the number  of bytes of  Large Data  that should be  buffered before it is written to disk   This value is only used when the  parameter LARGE DATA STORE is  set to FILE     DEFAULT  4096       M RGE    Healthcare    Section    PEGASUS_OP_ _NAME MESSAGE_PARMS  PEGASUS_OP_ _REGISTRATION MESSAGE_PARMS    PEGASUS_OPCODE_PATH MESSAGE_PARMS    REMOVE_PADDING_CHARS MESSAGE_PARMS  RETURN_COMMA_IN_DS_FL_FD_STRINGS   MESSAGE_PARMS    M RGE    Healthcare    Description    When using your own Pegasus license  to remove the 3 frames second limit   this should have the company name  that was used to generate your  Pegasus license     When using your own Pegasus license  to remove the 3 frames second limit   this should have the registration code  that goes with it s respective  PEGASUS_OP_ _NAME     This parameter specifies the directory  where Pegasus opcode DLLs are to be  loaded from  The opcode DLL refers  to files like picn6220 and not the  dispatcher DLL picn20  If the option is  empty  the SSM DLL is loaded from  the same directory as the dispatcher  DLL  If these files are not found   opcode SSM DLL is loaded using the  directory order Windows uses when  loading DLLs  The SSM DLL is loaded  from the current directory if     is  specified     DEFAULT   empty     When set to Yes  Merge DICOM will 
87. During association negotiation  for each proposed  service  the association requestor proposes that it serve as an SCU  service  class user  and or an SCP  service class provider   An association acceptor can  accept or reject the proposal     The ServiceName property retrieves the Merge DICOM service name of this  service which has been successfully negotiated between two DICOM application  entities     The TransferSyntax property retrieves a MCtransferSyntax object that  contains the Merge DICOM id for the negotiated transfer syntax  as well as its  DICOM Transfer Syntax UID     MCtransferSyntax properties    The MCtransferSyntax class provides methods to retrieve properties of the  DICOM transfer syntax encapsulated by class instances     Since the only instances are those defined by the static fields of the  MCtransferSyntax class the          operator can be used to check two transfer  syntax references for equality     The Name property retrieves the transfer syntax name provided by Merge DICOM  for the transfer syntax     The Uid property retrieves the DICOM Transfer Syntax UID associated with the  transfer syntax        The BigEndian property determines if the transfer syntax uses big endian  encoding or not  and the LittleEndian property determines if the transfer syntax  uses little endian encoding or not        The Encapsulated property determines if the transfer syntax uses  encapsulation or not     63    Merge DICOM Toolkit      contains  getSyntax  ListName  Get
88. ETWORK INACTIVITY TIMEOUT   System Console Out WriteLine  Network stopped     else    System Console Out WriteLine     MCexception             break      catch  System Exception e     System Console Out WriteLine  Error on network read     assoc abort     break                   You could  of course  have separate catch clauses for each exception     Table 10  exceptionNumber property for each MCexception class    MCexception subclass exceptionNumber property                                                     A    M RGE    Healthcare    M RGE    Fiealthcare    Merge DICOM Toolkit    NET C     MCexception subclass    exceptionNumber property       E          MCinvalidEncoding       Cinvalid    MCinvalidDirRecordTypeException    LicenseInfoError    Exception    INVALID DIMSE COMMAND  INVALID DIR RECORD TYPE  INVALID LICENSE                                        M 1       CnotStandardElement       Exception          MCoperationNo       tAllowedException    CrequiredAttributeMissing              NOT_A_STANDARD_DATA_ELEMENT  OPERATION  NOT  ALLOWED  REQUIRED ATTRIBUTE MISSING          Exception    MCtimeoutException TIMEOUT          Cunaccep          tableServiceException    UNNACCEPTABLE SERVICE       MCunknownHostNamel    Exception       UNKNOWN HOST    Un  Un    Merge DICOM Toolkit                User s Manual    Before anything else    The dynamic library  Is loaded    Configuration files located    You must be licensed    isInitialized    Application Domains    56    Librar
89. Enumerator  Size   toArray    MCnegotiationInfo  MCstorageNegotiation  MCqueryRetrieve   Negotiation    64    NET C  User s Manual       The ExplicitVR property determines if the transfer syntax explicitly specifies  the DICOM Value Representation  Otherwise the VR is known implicitly  according to each attribute tag     MCtransferSyntaxList properties    The MCtransferSyntaxList class provides methods to retrieve properties of the  DICOM transfer syntax list encapsulated by class instances     The contains method determines if the list contains a specified transfer syntax   The getSyntax method retrieves a reference to a specific MCtransferSyntax  object in the list     The ListName property retrieves the name that uniquely identifies this list  among all transfer syntax lists used by the library     The GetEnumerator method creates and returns an Iterator for all of the  MCtransferSyntax objects encapsulated in the list  The iterator will present the  elements in the order they were presented when this object was created     The Size property returns the number of elements in the list and the toArray  method returns a reference to the encapsulated MCtransferSyntax object array     Using Extended Negotiation Information    Some DICOM services allow you to use extended negotiation information during  the association creation process  The Toolkit provides the MCnegotiationInfo  abstract class to represent this process  Classes that extend the  MCnegotiationInfo class must supp
90. Exchange later in this document     Validating a Single Attribute    If you wish to validate only a single attribute  you may use the  validateAttribute method of the MCdimseMessage  MCfile or MCdataSet  class  The validateAttribute method works exactly as the validate method  with the exception that you provide a tag parameter to identify the attribute use  wish to have validated        MCdimseMessage msg     non null referenc    bool validates    validates   msg validateAttribute 0x00100010   MCvalidateLevel Errors Only     if   validates                      MCvalidationError err   msg getNextValidationError     while  err    null       System Console Out WriteLine err ToString       rr   msg getNextValidationError                  Streaming Attribute Sets    When DICOM messages are exchanged over a network  they are in an encoded  format specified by the DICOM standard and the negotiated transfer syntax   Merge DICOM Toolkit calls this encoded format a message stream and supplies  powerful methods that allow your applications to work directly with message  streams     When your application builds or parses attribute sets as described earlier  it  works with the MCattributeSet objects contained in MCdimseMessage or MCfile  objects  These MCattributeSet objects abstract and encapsulate the DICOM  message and hides its details from the developer  When you send a DICOM  message over the network  Merge DICOM internally creates a DICOM message  stream that is passed over the ne
91. FAULT  1 2 840 10008 1 2 4 91  JPEG 2000 MC LOSSLESS ONLY SYNTAX   ASSOC PARMS This value defines the UID for JPEG  2000 Part 2 Multi component Image  Compression  Lossless Only   DEFAULT     1 2 840 10008 1 2 4 93     JPEG 2000 MC SYNTAX ASSOC PARMS This value defines the UID for JPEG  2000 Part 2 Multi component Image  Compression  DEFAULT     1 2 840 10008 1 2 4 92     JPEG LS LOSSLESS SYNTAX ASSOC PARMS This value defines the UID for JPEG  LS Lossless   DEFAULT  1 2 840 10008 1 2 4 80  JPEG LS LOSSY SYNTAX ASSOC PARMS This value defines the UID for JPEG  LS Lossy  Near Lossless    DEFAULT  1 2 840 10008 1 2 4 81    M RGE 193    Healthcare       MPEG2_MPML_SYNTAX    LOCAL_APPL_CONTEXT_NAME    PDU MAXIMUM LENGTH      PRIVATE SYNTAX 1 SYNTAX    PRIVATE SYNTAX 1 LITTLE ENDIAN    PRIVATE SYNTAX 1 EXPLICIT  VR    PRIVATE SYNTAX 1 ENCAPSULATED    194    Section    ASSOC_PARMS  ASSOC_PARMS    ASSOC_PARMS    ASSOC_PARMS  ASSOC_PARMS  ASSOC_PARMS    ASSOC_PARMS    Description    This value defines the UID for MPEG2  Main Profile   Main Level     DEFAULT  1 2 840 10008 1 2 4 100    The DICOM Application Context Name   UID   as specified in the DICOM  Standard      DEFAULT     1 2 840 10008 3 1 1 1       The maximum size of DICOM Protocol  Data Units that can be received by this  Merge DICOM implementation  This  value is used during association  negotiation to specify the maximum  sized PDUs that your application can  receive     DEFAULT  28K  MINIMUM  4K  MAXIMUM  NONE    The uniqu
92. File    The Merge DICOM Initialization File  usually called merge ini  provides the  DICOM Toolkit with its top level configuration  It specifies the location of the  other three configuration files  along with message and error logging  characteristics     All Merge DICOM applications require access to the Initialization File  Your  NET  programs access the Initialization File differently than do C applications  such as  the utility programs distributed with the Merge DICOM Toolkit              The C utility programs access the merge ini file by accessing the MERGE  INI  environment variable  You must set the MERGE  INI environmental variable to  point to the Initialization File  This variable can be set within a command shell   for example                 In DOS command shell              set MERGE INI WMnc3advNMmerge ini       See the Platform notes for your platform if none of these methods apply                 Merge DICOM applications written in  NET do not use the MERGE  INI  environment variable  Instead  they determine the location of the Initialization  File in any way that is appropriate and then pass the location to the Assembly   using the static mclnitialization method of the MC class     The initialization file contains one  MergeCOM3  section that points to the  location of the other three Merge DICOM initialization files  specifies  characteristics of the message error log kept by the DICOM Toolkit library  turns  particular types of logging on and off  and s
93. File for the exceptions that may be  thrown     You can use the Count property of the MCattribute class to retrieve the number  of values that are currently stored for an attribute  If no values are stored for the  attribute zero will be returned  If the attribute contains one NULL value  1 will be  returned        MCattributeSet as     non null referenc  MCtag tag   new MCtag 0x0008  0x0010      int values   as tag  Count     Listing an Attribute Set    You can create a formatted list of the attributes of an attribute set  along with  their values by using the List method of the MCattributeSet  The 1ist method  produces a report describing the contents of the MCattributeSet  or one of its  sub classes   The report will be written to the TextWriter provided  or to  stdout  if a file is not provided     97    Merge DICOM Toolkit               User s Manual    Attribute set to XML  conversion    writeTOXML method    Note  If the object contains an attribute with a Value Representation of SQ   sequence of items   each item in the sequence will be listed  Each  sequence of items is indented in the listing four spaces to the right of its  owning message or items     MCattributeSet as     a non null referenc   as  list  9     list to the standard output stream  System IO StreamWriter writer   new StreamWriter     myFile       as list writer      list to myFile             Converting an Attribute Set into an XML string    You can convert a list of attributes of an attribute set  alo
94. GE DATA STORE parameter informs the toolkit where it should store  large data  either in memory  or in temporary files on disk  Large data is defined  as a value for an attribute larger than LARGE DATA SIZE bytes  Pixel data   associated with a medical image would most certainly be considered large data     If you are running your process on a resource rich system that supplies plenty of  physical and virtual memory  you should select LARGE DATA STORE   MEM to  improve your performance  If your process is not so fortunate or you are dealing  with messages with very large data values  you will want to use   LARGE DATA STORE   FILE  In this case  the DICOM Toolkit will manage  the large data in temporary files located in the TEMP  FILE DIRECTORY you  specify                                            Large data that is of value representation OB  Other string of Bytes  or OW   Other string of 16 bit Words  or OF  Other string of 32 bit IEEE 754 1985  floating point words  is treated specially by the toolkit  Pixel Data  Curves  and  Overlays are composed of this type of data  You can let the toolkit manage  OB OW OF data for you like any other large data  or register your own Callback  Class in your applications to deal with such data as it is being received or  transmitted over the network  The use of Callbacks will be covered later when  we discuss developing DICOM applications with the toolkit                 The          BUFFER  SIZE is used to tell the toolkit what size   
95. IMPLEMENTATION_CLASS_UID  IMPLEMENTATION VERSION  ACCEPT MUTLPLE PRES CONTEXTS       83F3 3F26 FD6E  2 16 840 1 113669 2 1 2  MergeCOM3 361   Yes                                                       The toolkit sample applications  and your own applications that use the DICOM  Toolkit Library will not work without a valid license number     The above example of the  ASSOC_PARMS  section of the system profile also  contains example implementation class UID and implementation version  configuration values  The implementation class UID is intended by the DICOM  standard to be unique for major revisions of an application entity  The  implementation version is intended to be unique for the minor revisions of an  application entity  These configuration values are used during association  negotiation by Merge DICOM and are intended to aid in tracking versions of  applications in the field        The ACCEPT MULTIPLE PRES CONTEXTS configuration value is used by server   SCP  applications  This value determines if multiple presentation contexts can  be negotiated for a single DICOM Service  This option is discussed below                    As mentioned earlier  a listen port must be identified for your server AE  Port 104  is the standard DICOM listen port  This  along with the number of simultaneous  TCP connection requests that can be queued up for acceptance  pending  for  Merge DICOM toolkit  is specified in the  TRANSPORT PARMS  section     The        PENDING CONNECTIONS setting 
96. Instance  which is not an Image or  Waveform     A reference to one  Image  IMAGE Content  Item may convey a  reference to a Softcopy  Presentation State  associated with the  Image        M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C     Item Type Merge DICOM Toolkit    Class    WAVEFOR MCwaveformltem  M    MCspatialCoordinates  Item    SCOORD  TCOORD  CONTAINE  R    MCtemporalCoordDate  Timeltem    MCtemporalCoordTim      Offsetsltem    MCtemporalCoord  Positionsltem    MCcontainerltem    Relationship Types between Content Items    Concept Name    Purpose of  Reference    Purpose of  Reference    Purpose of  Reference    Document Title or  document section  heading  Concept  Name conveys the  Document Title  if  the ONTAINER  is the Document  Root Content  Item  or the  category of  Observation     User s Manual    Description    A reference to one  Waveform     Spatial coordinates of a  geometric region of  interest in the DICOM  image coordinate  system  The IMAGE  Content Item from which  spatial coordinates are  selected is denoted by a  SELECTED FROM  relationship     Temporal Coordinates   i e  time or event based  coordinates  of a region  of interest in the DICOM  waveform coordinate  system  The  WAVEFORM or IMAGE  or SCOORD Content  Item from which  Temporal Coordinates  are selected is denoted  by a SELECTED FROM  relationship     CONTAINER groups  Content Items and  defines the heading or  category of observation  that applies to t
97. LUE to specify  no upper limit        Non standard data elements are built using the following constructor     MCdataElement de        MCvr vr   vrDT    ushort n   1     minimum number of values allowed  ushort m   5     maximum number of values allowed  String name    My Private Data Element         79    Merge DICOM Toolkit                User s Manual    Merge DICOM Toolkit  attribute sets    Messages and files  Contain attribute sets    MCdimseMessage    Constructing a message to  use with the  MCdimseService   base class    80    try    MCtag tagl   new MCtag 0x8014  0  0010         de   new MCdataElement  vr  tagl  n  m  name      catch  MCillegalArgumentException e              An MCillegalArgumentException will be thrown if vr parameter was not a valid  MCvr reference     An MCillegalArgumentException will be thrown if n or m is less than 1  or if n  gt  m     Working With Attribute Sets    As mentioned above  the MCattributeSet class encapsulates different types of  attribute sets used by DICOM  Sub classes of MCattributeSet are used to define  those different types     e MCcommandSet contains the attributes of a DIMSE message command set   e MCdataSet contains the attributes of a DICOM information object   e  MCitem contains the attributes of a DICOM item     e  MCtfileMetalnfo contains the attributes of a DICOM file s meta information     Your applications deal with network messages in Merge DICOM using  MCdimseMessage objects  and DICOM files using MCfile objects 
98. MCtransferSyntax JpegBaseline     Server  SCP  applications are configured differently than client  SCU   applications  An SCP should include all of the transfer syntaxes a service  supports in a single transfer syntax list  If more than one transfer syntax list is  used for a service  server  SCP  applications will only support the transfer  syntaxes contained in the first transfer syntax list  The following is an example  configuration for a server  SCP       Storage_Service_List                                                                             SERVICES_SUPPORTED   1   Number of Services  SERVICE_1   STANDARD       SYNTAX_LIST_1   CT_Syntax_List_SCP    CT  Syntax List SCP   SYNTAXES SUPPORTED   4 4 Number of Syntaxes  SYNTAX 1   JPEG BASELINE  SYNTAX 2   EXPLICIT LITTLE ENDIAN  SYNTAX 3   IMPLICIT LITTLE ENDIAN  SYNTAX 4   EXPLICIT BIG ENDIAN                         As discussed previously  for server  SCP  applications  the order in which  transfer syntaxes are specified in a transfer syntax list dictates the priority Merge  DICOM places on them during association negotiation  In this case  Merge  DICOM would select JPEG_BASELINE if proposed  followed by  EXPLICIT  LITTLE ENDIAN  IMPLICIT LITTLE ENDIAN  and  EXPLICIT BIG ENDIAN        70    M RGE    Fiealthcare    Merge DICOM Toolkit      A brief review  MCdataElement  MCtag  MCattribute  MCvr    MCdimseMessage  contains an  MCcommandsSet  and  optionally  an  MCdataSet    SQ attributes have  MCitem  objects as v
99. Management  Study Component Management  Modality Performed Procedure Step  Modality Performed Procedure Step  Notification   Modality Performed Procedure Step  Retrieve    Detached Results Management  Detached Interpretation  Management   Detached Results Mgmt  Meta    User   s Manual    Description    Creation and tracking of  the subset of patient and  patient visit information  that is required to aid in  the management of  radiographic studies     Creation  scheduling   performance  and  tracking of imaging  studies     Creation and tracking of  results and associated  diagnostic interpretations        Information Model    The DICOM Standard includes the specification of a DICOM Information Model   A detailed entity relationship diagram of this model is included in both parts 3 and  4 of the standard  This model specifies the relationship between the different  types of objects  also called entities  managed in DICOM  For example  a  Patient has one or more Studies  each of which are composed of one or more  Series and zero or more Results  etc     Most of DICOM s services perform actions on or with object instances     An  object can be thought of as a class of data  CT Image  Film Box  etc   while an  object instance is an actual occurrence of an object  a particular CT Image  a  populated Film Box  etc       There are two types of objects  and hence  object instances  defined in DICOM   Normalized objects are objects consisting of a single entity in the DICOM  informat
100. Merge Healthcare  200 E  Randolph Street   Chicago  IL USA  60601   877 44 MERGE       Copyright 2012 Merge Healthcare Incorporated  Unauthorized use  reproduction  or disclosure is prohibited     This document has been prepared by Merge Healthcare Incorporated  for its  customers  The content of this document is confidential  It may be reproduced  only with written permission from Merge Healthcare  Specifications contained  herein are subject to change  and these changes will be reported in subsequent  revisions or editions     Merge Healthcare   is a registered trademark of Merge Healthcare Incorporated     DICOM is a registered trademark of National Electrical Manufacturers  Association  NEMA   Merge DICOM Toolkit    is a trademark of Merge  Healthcare  The names of other products mentioned in this document may be the  trademarks or registered trademarks of their respective companies     For assistance  please contact Merge Healthcare Customer Support     e In North America  call toll free 1 800 668 7990  then select option 2   e International  call Merge Healthcare  in Canada   1 905 672 7990  then  select option 2   e Email mdtsupport merge com    Part Date Revision Description    COM 390 May 2012 1 0 Updated bi annually    Merge DICOM Toolkit                User s Manual       Contents  COMENTS  cs                    iii  OUI                                                        1  The DICOM Standard    ttn ttt t eed e tt Pa eet dedu 1  The Merge DICOM                 
101. NIDIR  is used to represent the directory where   merge  ini  is  It is used like the environment variable with the difference that  it is automatically resolved and does not need to be set     If MERGECOM_3_PROFILE  MERGECOM_3_SERVICES or  MERGECOM_3_APPLICATIONS contain relative paths with a prefix     MC3INIDIR   or   MC3INIDIR    the toolkit considers the path relative to  the location of the  merge ini  file     For example                    MERGECOM 3 PROFILE     MCS3INIDIR    config mergecom pro    The path of the profile file is     config mergecom pro  relative to the location  of the  merge ini  file            testing the sample applications for the first time and cannot get the  client  SCU  application to connect to the server  SCP  for any of the sample  applications  The MCapplication requestAssociation method is throwing an  exception  It appears as though the connection is opening  but it is quickly  dropped  Why is this happening     As a security measure  the MCassociation startListening method used in  SCPs attempts to determine the hostname of SCUs connecting to it  If it  cannot determine the remote hostname  it will drop the connection  The  startListening method uses the local system s host file or its configured  domain name server to translate the SCU s IP address into its hostname  By  configuring the SCU s hostname in your local hosts file  this problem will be  eliminated  Also  the ACCEPT ANY HOSTNAME configuration value in the  mergecom pro fil
102. Open pixel data source  e g   a file  here    if  openFailed   throw new MCcallbackCannotComplyException                  Read next chunk of pixel data from source     and return it and its size in a MCdata object  if  readFailed    throw new MCcallbackCannotComplyException          92 M RGE    Healthcare    Merge DICOM Toolkit           Performance Tuning    MCfileDataSource  MCstreamDataSource  MCmemoryDataSink    M RGE    Healthcare    NET C  User   s Manua       Data is read into chunk   byte   chunk   new byte 4096        put number of bytes read in size   int size       set isLast to true if this is last of the data  bool isLast     MCdata data  data IsLast  return data     new MCdata chunk  size    isLast             This MCdataSource class is called by Merge DICOM only when triggered by your  application  For example  your application might use MyPDSupplyCallback to set  the value of the MCdicom PIXEL DATA attribute  7FEO  0010  as follows           MCattributeSet as     non null referenc   uint length    MyPDSupplyCallback cb   new MyPDSupplyCallback     cb file    MypixelDataFile         MCattribute attrib   as MCdicom PIXEL DATA    attrib setValue cb  length            On making this call  the toolkit library will keep a reference to the MCdataSource  instance  When the data is required by the toolkit  if the attribute set is written to  a file or to the network   it will repetitively call the provideData method of the  callback class until it indicates that all th
103. R FULL format if the COMPRESSION RGB TRANSFORM FORMAT configuration  option is set to YBR  FULL  The Photometric Interpretation tag must be changed  by the application after compressing RGB data  Similarly  the Photometric  Interpretation tag should be changed back to RGB before decompressing   YBR FULL Or YBR FULL 422 data           102 M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C  User   s Manual    Table 15  JPEG Baseline Supported Photometric Interpretations and Bit Depths    JPEG Baseline    Photometric MONOCHROME1 BR_FULL_422  Interpretation MONOCHROME2 BR_FULL    Bits Stored  Bits Allocated    Samples Per Pixel       The MCtransferSyntax JpegExtended2_4 transfer syntax is UID  1 2 840 10008 1 2 4 51  JPEG Extended  Process 2  amp  4   Default Transfer  Syntax for Lossy JPEG 12 Bit Image Compression  Process 4 only   and uses  Pegasus libraries 6420 6520  Table 16 details the photometric interpretation and  bit depths supported by the standard compressor and decompressor for this  transfer syntax  When lossy compressing RGB data  the standard compressor by  default compresses the data into YBR_FULL_422 format  The compressor can  also compress in YBR_FULL format if the  COMPRESSION_RGB_TRANSFORM_FORMAT configuration option is set to  YBR_FULL  The Photometric Interpretation tag must be changed by the  application after compressing RGB data  Similarly  the Photometric Interpretation  tag should be changed back to RGB before decompressing Y
104. SopReference ReferencedSopClassUid      Sop Instance       imageItem SopReference ReferencedSopInstanceUid         Deploying Applications    There are several issues to consider when deploying a Merge DICOM based  application  These include deciding which Merge DICOM files are needed for  your application  how to set important configuration options to reduce problems in  the field  and how to deal with potential UN VR problems  The following sections  describe these issues in further detail     Merge DICOM Required Files    There are a number of files required by Merge DICOM applications  These files  are described in Table 25     Table 25  Files needed when deploying an application       File Description and Use    Mergecom dll         Merge DICOM library wrapper  This library  services your calls to the Native Merge DICOM Toolkit  Library     Mergecom Native dll Native Merge DICOM Toolkit library    required for deployments on 32 bit platforms     Mergecom Native64 dll Native Merge DICOM Toolkit library for 64 bit  processes   required for deployments on 64 bit  platforms     Picn20 dll Pegasus libraries used for compression     Picn6220 dll    Picn6320 dll  Picn6420 dll  required for deployments on 32 bit platforms     Pegasus Imaging Corporation  Hwww jpg comH     Picn6520 dll  Picn6820 dll  Picn6920 dll       158 M RGE    Healthcare    Merge DICOM Toolkit               User   s Manual    Description and Use    picx20 dll 64 bit Pegasus libraries used for compression     
105. TANDARD_RT_IMAGE  STANDARD_RT_ION_BEAMS_TREAT  STANDARD_RT_ION_PLAN  STANDARD_RT_PLAN    STANDARD_RT_STRUCTURE_SET    DICOM Service Class    Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage    Storage    Storage       Merge DICOM Service Parameter DICOM Service Class  STANDARD_RT_TREAT_SUM  STANDARD_SEC_CAPTURE Storage  STANDARD_US Storage  STANDARD_US_MF Storage  STANDARD_US_MF_RETIRED Storage  STANDARD_US_RETIRED Storage  STANDARD_VIDEO_ENDOSCOPIC Storage  STANDARD VIDEO MICROSCOPIC Storage  STANDARD VIDEO PHOTOGRAPHIC Storage  STANDARD VL ENDOSCOPIC Storage  STANDARD VL MICROSCOPIC Storage  STANDARD VL PHOTOGRAPHIC Storage  STANDARD VL SLIDE MICROSCOPIC Storage  STANDARD VOI LUT Storage  STANDARD WAVEFORM 12 LEAD ECG Storage  STANDARD WAVEFORM AMBULATORY ECG Storage  STANDARD WAVEFORM BASIC VOICE AU Storage  STANDARD WAVEFORM CARDIAC EP Storage  STANDARD WAVEFORM GENERAL ECG Storage  STANDARD WAVEFORM HEMODYNAMIC Storage  STANDARD XRAY ANGIO Storage  STANDARD XRAY ANGIO BIPLANE Storage    STANDARD XRAY RF Storage    STEREOMETRIC  RELATIONSHIP Storage    STORAGE COMMITMENT PULL Storage Commitment  STORAGE COMMITMENT PUSH Storage Commitment  STUDY COMPONENT MANAGEMENT Study Management    STUDY CONTENT  NOTIFICATION Study Content Notification       184 M RGE    Healthcare    M RGE    Fiealthcare    Merge
106. The Mergecom Logging namespace contains definitions for utilizing the Merge  DICOM log file  usually merge log   The Merge DICOM logging mechanism  MClog allows logging at several different logging levels  Error  Warning  Info  and nine  trace logging levels are allowed  The MClog class contains methods for logging  to these various log levels  The method prototypes to log to several of these  levels are     Logging a message    public static void error System String msg   public static void warning System String msg   public static void info System String msg   public static void tl System String msg   public static void t9 System String msg     Each of these methods writes an entry into the Merge DICOM log file containing  msg  The entry will be logged only if messages of specific type have been  enabled in the merge ini file     The Merge DICOM log file is defined by the LOG FILE parameter in the   MergeCOM3  section of the merge ini file  To enable logging of specific types of  messages  enter one or more of these parameters in the merge ini file                 ERROR MESSAGE    destinations    WARNING MESSAGE   destinations    INFO MESSAGE   destinations                                   destinations   may be one or both of these values  separated by commas        File to request that the messages be written to the  LOG FILE       Screen to request that the messages be written to the  system s standard out          Memory to request that the messages be written to system
107. USE_LOSSY MESSAGE_PARMS    COMPRESSION_J2K_LOSSY_RATIO MESSAGE_PARMS    COMPRESSION_J2K_LOSSY_QUALITY MESSAGE_PARMS  COMPRESSION_J2K_LOSSY_USE_QUALITY   MESSAGE_PARMS    200    Description    Configuration Parameter for  MC_Standard_Compressor  The  Pegasus libraries allow compressed  image data to be returned as it  continues to compress more image  data  This may result in an image  frame having one or more fragments   This is perfectly legal  however some  viewers may not be able to display the  image if they do not support multiple  fragments per frame     Configuration Parameter for  MC_Standard_Compressor  When  JPEG_2000 is used as a transfer  syntax  this could mean either lossy or  lossless compression  This parameter  specifies the intended syntax     Configuration Parameter for  MC_Standard_Compressor  When  JPEG_2000 with   COMPRESSION WHEN J2K USE L  OSSY   Yes  and   COMPRESSION J2K LOSSY USE  QUALITY   No  a ratio can be  specified  The compressor attempts to  reduce the image size to  1 COMPRESSION J2K LOSSY RAT  IO           Configuration Parameter for  MC_Standard_Compressor  When  JPEG_2000 with   COMPRESSION WHEN J2K USE L  OSSY   Yes  and  COMPRESSION_J2K_LOSSY_USE  QUALITY   Yes  a quality can be  specified  Valid values are 1 to 10  1  being highest quality image           Configuration Parameter for  MC_Standard_Compressor  When  JPEG_2000 with   COMPRESSION WHEN J2K USE L  OSSY   Yes  this indicates which  metric should be used for lossy  compression 
108. You can use the addValue or setValue method to assign non NULL values    We will discuss setValue below      As discussed above  these methods are implemented in the MCattribute class  and the MCattributeSet class  where you must identify the tag that you re working  on  This can be done using an MCtag object or by supplying the actual DICOM  tag as a uint  The MCattributeSet implementation finds the appropriate  MCattribute within the set  and then calls the corresponding setValue or  addValue method in the MCattribute class for convenience  All three methods  allow you to identify the attribute using an MCtag object     M RGE    Healthcare    Merge DICOM Toolkit      Polymorphic values    M RGE    Healthcare       NET C  User   s Manual    While these methods allow you to specify the value using a variety of data types   the attribute   s Value Representation restricts the data type of the value  parameter  Table 11 details which data type may be used with each Value  Representation     Table 11  Permissible data types per Value Representation of the attribute     Data Type May be used to set attributes with these VRs    AE  DS  IS  Ul  CS  LO  LT  SH  ST  UT  DA  DT  TM   AS  PN  FL  FD  AT  UL  SL  SS  US   uem      m   hm          emen O    MCattributeSet myAttrSet     non null referenc    SL  SS  US  UL  AT  IS       MCtag tagl   new MCtag 0x00080020     MCtag tag2   new MCtag 0x00080030     MCtag tag3 new MCtag 0x00080052     MCtag tag4 new MCtag 0x00280010        the 
109. _DELIVERY_INSTRUCTION  RT_CONVENTIONAL_MACHINE_VERIF  RT_ION_MACHINE_VERIF  SC_MULTIFRAME_GRAYSCALE_BYTE  SC_MULTIFRAME_GRAYSCALE_WORD  SC_MULTIFRAME_SINGLE_BIT  SC_MULTIFRAME_TRUE_COLOR  SEGMENTATION   SPATIAL_FIDUCIALS  SPATIAL_REGISTRATION  SPECTACLE_PRESCRIPTION_REPORT  STANDARD_BASIC_TEXT_SR  STANDARD_BLENDING_SOFTCOPY_PS  STANDARD_COLOR_SOFTCOPY_PS  STANDARD_COMPREHENSIVE_SR  STANDARD_CR   STANDARD_CT   STANDARD_CURVE  STANDARD_DX_PRESENT  STANDARD_DX_PROCESS  STANDARD_ECHO  STANDARD_ENCAPSULATED_PDF    STANDARD_ENHANCED_SR    DICOM Service Class    Print Management    Storage    Storage    Print Management    Storage    Storage    RT Machine Verification    RT Machine Verification    Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage  Storage    Storage    Storage    Verification  Storage    Storage       M RGE    Healthcare    M RGE    Fiealthcare    Merge DICOM Service Parameter  STANDARD_GRAYSCALE_SOFTCOPY_PS  STANDARD_HARDCOPY_COLOR  STANDARD_HARDCOPY_GRAYSCALE  STANDARD_IO_PRESENT  STANDARD_IO_PROCESS  STANDARD_IVOCT_PRESENT  STANDARD_IVOCT_PROCESS  STANDARD_MG_PRESENT  STANDARD_MG_PROCESS  STANDARD_MODALITY_LUT  STANDARD_MR   STANDARD_NM  STANDARD_NM_RETIRED  STANDARD_OPHTHALMIC_16_BIT  STANDARD_OPHTHALMIC_8_BIT  STANDARD_OVERLAY  STANDARD_PET  STANDARD_PET_CURVE  STANDARD_PRINT_STORAGE  STANDARD_PSEUDOCOLOR_SOFTCOPY_PS  STANDARD_RT_BEAMS_TREAT  STANDARD_RT_BRACHY_TREAT  STANDARD_RT_DOSE  S
110. a  dictionary     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Read Me FIRST     Assembly Reference    Extension DB Manual    Sample Margin Note    ClassName    Performance Tuning    M RGE    Healthcare    Documentation Roadmap  The Merge DICOM Toolkit documentation is structured as pictured in Figure 4     The User   s Manual is the foundation for all other documentation because it  explains the concepts of DICOM and the  NET C  DICOM Toolkit  Before  plunging into the Windows Help File  you should be comfortable with the material  in the User Manual     The Windows Help File serves as a reference manual for the         Assembly   This help file contains detailed information on the classes provided by the   NET C  DICOM Toolkit     The Release Notes contain a complete release history of the Merge DICOM  Toolkit  It also contains a description of the software distribution and information  on contacting Merge OEM for support     The DICOM Message Database Manual is an optional manual that describes the  organization of the Merge DICOM Database and how to use it to extend standard  services and define your own private services  Tools are supplied to integrate  your changes and create a new binary runtime object database     User s  Manual    AE   OPTIONAL DICOM  Windows Help Release Message  File  Reference Notes Database  Manual  Manual    Figure 4  Merge DICOM Toolkit Documentation Roadmap    Conventions  This manual follows a few formatting conv
111. a service class implies a higher level of  service  this collection is combined by the standard into a Meta Service   Specifying that your application supports a specific meta service is a useful  shorthand for explicitly listing out the collection of services that make up that  meta service     M RGE    Healthcare    Merge DICOM Toolkit      NET C     User   s Manual    Table 1  DICOM Services Classes and their Component Services    Service Class    MCverificationService Verification    MCstorageService    Storage    M RGE    Healthcare    Services    Verification    Computed Radiography Image  Storage   CT Image Storage   Enhanced CT Image Storage   MR Image Storage   Enhanced MR Image Storage   MR Spectroscopy Storage   Enhanced MR Color Image Storage   Spatial Fiducials Storage   Spatial Registration Storage   Deformable Spatial Registration  Storage   Ultrasound Image Storage   Ultrasound Multi frame Image  Storage   Enhanced US Volume Storage   Generic implant Template Storage   Implant Assembly Template Storage   Implant Template Group Storage   Implantation Plan SR Document  Storage   Intraocular Lens Calculations  Storage   Macular Grid Thickness and Volume  Report   Nuclear Medicine Image Storage   Positron Emission Tomography  Image Storage   Enhanced PET Image Storage   Breast Tomosynthesis Image  Storage   Intravascular Optical Coherence  Tomography Image Storage     For  Presentation   Intravascular Optical Coherence  Tomography Image Storage     For  Processing
112. a to retrieve the attribute s value     The callback class you provide must provide a receiveData method that is  called by the library to provide portions of the attribute s value  The library calls  the receiveData method  passing an instance of the MCdata class that  contains a reference to the data being provided and a System Object reference  to the origin of the data     Merge DICOM Toolkit               User s Manual    As an example  your application could define a MCdataSink class called  MyPDStoreCallback whose purpose is to store Pixel Data to an external data  sink so that your application uses less primary memory  Pseudo code for this  class follows     class MyPDStoreCallback   MCdataSink    public String file   null   public bool isFirst   true   public void receiveData  MCdata data   System Object origin     if  isFirst     isFirst   false      Open pixel data sink  e g   file  here    if  openFailed   throw new MCcallbackCannotComplyException                 byte   array   data ManagedBuffer   int size   data Length        Store size bytes of the array in the pixel data sink     if  storeFailed    throw new MCcallbackCannotComplyException     if  data IsLast        close the data sink here         return             This callback is called by the Merge DICOM  NET Library only when triggered by  your application  For example  your application might use  MyPDStoreCallback to retrieve the value of the TAG PIXEL DATA attribute   7FEO  0010  as follows            
113. aSource fileObj FileName         CmediaStorageService service   new  MCmediaStorageService  myApp         try    service readFile fileObj     catch  Exception e          source         131    Merge DICOM Toolkit                User s Manual    Pass OB OW OL data     readFileBypassLargeData     This method reads the file just as the readFile                method does  with one exception  If the stream contains an attribute for      registered callbacks  if  amp                          which      MCattributeContainer instance has been registered  the attribute   s  value is NOT passed on to the MCattributeContainer  but instead the values   readFileBvpassLaraeDat length and offset into the file is passed to the receiveMediaDataLength    method of the MCattributeContainer  This provides the opportunity for  substantial performance improvement  Note that if no MCattributeContainer  is registered for the OB OW OF attribute  the attribute s value will be stored  by Merge DICOM Toolkit  as usual     Capplication myApp     non null reference    Cfile fileObj   new MCfile  FileName     CdataSource source   new  MCfileDataSource fileObj FileName         CmediaStorageService service   new  MCmediaStorageService  myApp         try    service readFileBypassLargeData fileObj  source      catch  Exception e                Read only up to the Pixel e     readFileUpToTag     This method retrieves the values of the file stream just   Data as the readFile method does  but it will stop request
114. able 26 with descriptions of how  they can be set     Table 26  Configuration options to consider when deploying an application     Configuration Option Description    ACCEPT_ANY_APPLICATION_TITLE   When set to NO  Merge DICOM requires that  the Application Entity title sent in an  association request match one of the  registered application titles for the SCP   When there is no match  the association will  be automatically rejected  Setting this option  to YES will eliminate some association  negotiation problems in the field for SCP  applications     ACCEPT_ANY_HOSTNAME When set to NO  Merge DICOM will attempt  to resolve the IP address of the SCU  application into a hostname  If this resolution  cannot be done  the association will  automatically be rejected  Setting this option  to YES will reduce configuration problems in  the field for SCP applications     EXPORT_UN_VR_TO_MEDIA Setting this option to NO will cause UN VR  attributes to not be exported when writing  DICOM Part 10 format files with the writeFile  or writeFileByCallback methods of the  MCmediaStorageService class  See the  following sections for a further discussion of  UN VR     EXPORT UN VR TO NETWORK Setting this option to NO will cause UN VR  attributes to not be exported over the network  when sending messages using the  MCdimseService class  See the following  sections for a further discussion of UN VR        160 M RGE    Healthcare    Merge DICOM Toolkit      What to do when all  network partners are
115. ader Close       Message Exchange  Network Only     We have discussed how associations are managed as well as how messages  objects are populated and parsed  Now we discuss how these DICOM  messages are exchanged with other application entities over the network     The exchange of DICOM messages between AE s only occurs over an open  association  After the DICOM client  SCU  application opens an association with  a DICOM server  SCP   the client sends request messages to the server  application  For each request message  the client receives back a corresponding  response from the server  The server waits for a request message  performs the  desired service  and sends back some form of status to the client in a response  message  This process  along with the corresponding Merge DICOM Toolkit  method calls  are pictured in Figure 14     Request Message                MCdimseService sendRequestMessage MCassociation read    DICOM DICOM  Client Open Association Server  MCassociation read MCdimseService sendResponseMessage    sc SET  Response Message    Figure 14  Message Exchange in Merge DICOM Toolkit Applications    Reading Network Messages    The read method of the MCassociation class is always used to retrieve the next  message available on the network connection  It returns an MCdimseMessage  object that encapsulates the DICOM message  Its only parameter is a timeout  value     public MCdimseMessage read long timeout       The timeout parameter specifies  in milliseconds  how
116. age validate    MCdimseMessage validate    new MCfile    MCfile validate    Note  You must use setServiceCommand  method before validating and or sending a  message created in this manner     new MCdimseMessage       MCfile validate    new MCdataSet    MCdataSet validate       When the attribute set is constructed by providing the service and command to  be used  there is an up front performance cost but it provides additional  validation as you set the value of attributes in the message object  When the  service and command are not known at construction time  the cost occurs when    the validate call is made     M RGE    Healthcare    Merge DICOM Toolkit      Performance Tuning    validateAttribute    Message stream  defined    Streaming methods    streamOut  streamin  streamLength  MCstreamOffset    M RGE    Healthcare    NET C  User s Manua    Many times the validate method is selectively used in an application  as a  runtime option or conditionally compiled into the source code  Validation might  only be used during integration testing or in the field for diagnostic purposes   Reasons for this include performance since the overhead associated with  message validation may be an issue  especially for larger messages having  many attributes or on lower end platforms  Also  validation can clutter the  message log with warnings and errors that may not be desirable in a production  environment  Performance issues related to message handling are discussed  further under Message 
117. ai iiie tie re secant ction ka    99  Encapsulated Pixel              100  Working with MCabstractMessage Derived Classes                                       101  Compression and Decompression                         101  Merge DICOM Supplied Compressors and Decompressors                       101  Validating Attribute Sets                         105  The Overhead of Validation    109  Validating a Single                                     4        111  Streaming Attribute Sets                      essere 111  Message to XML conversion                          114  XML to Message conversion             2  400000  00            114  Message Exchange  Network Only                        sse 115  Reading Network                                   115  Using the MCdimseService                     ssssssssseeeneen enn 116  Using the sendRequestMessage                                                                 116  Using the sendResponseMessage                                                              116  Using Attribute Containers                                                   118  Using an Attribute Container      a Server Application                                   118  Using an Attribute Container in a Client                                                         118  Declaring an MCattributeContainer Class                                                    119  Writing the provideDataLength                                                                     1
118. alled first to associate this file object with a given DICOM  service and command     MCfile myFile   new MCfile     or   String file    MyFileName      MCfile myFile   new MCfile file      Convert an MCdimseMessage object to an MCfile object    One form of the constructor converts an MCdimseMessage object  message   into a file object associated with the specified file system  file   The data set  contained in message will be used in this object     String fileName    MyFileName    MCdimseMessage message     a non null referenc          myFile   new MCfile message  fileName          Note  The original MCdimseMessage and the new MCfile objects will be  sharing the same MCdataSet object     Setting data set values    If the command and serviceName parameters are not provided  it is not  necessary to add attributes to the data set before setting attribute values  If one  of the set value methods of the contained MCdataSet object is used for an  attribute  the attribute will automatically be added to the data set before the value  is set  This is NOT THE CASE if the MCfile object is built when the command  and service are known  In that case the message IS associated with a given  service command pair and attributes other than those associated with that  service and command must be explicitly added to the message before setting  values for the added attributes     Merge DICOM Toolkit                User s Manual    Specifying the file name    The fileName parameter specifies an 
119. alue into array     put length read into size  if  thereIsNoMoreData    isLast   true   MCdata data   new MCdata array size    data IsLast   isLast   return data     M RGE    Healthcare    Merge DICOM Toolkit      Merge DICOM Toolkit  calls to provide the  attribute   s data length    Merge DICOM Toolkit  calls to provide the  attribute   s data length    M RGE    Healthcare    NET C  User   s Manual    Writing the receiveDataLength method    The receiveDataLength method is called by the library to provide the callback  class with the data length  dataLength parameter  of the attribute identified by  the attribSet and tag parameters  The library calls this method before calling  the receiveData method        If the method cannot comply with the request  it must throw an  MCcallbackCannotComplyException  If the exception is thrown  Merge  DICOM will make no further calls for this instance of the attribute     public void receiveDataLength  MCattributeSet attribSet   MCtag tag  uint dataLength      if  dataLengthUnacceptable   throw new MCcallbackCannotComplyException          mYlocalLength   dataLength             Writing the receiveData method    The receiveData method is called by the library to provide the callback with  some or all of the attribute s value  The library has set the data field of the  MCdata object to a byte array containing all or a portion of the attribute s value     isFirst Willbe true if the library is presenting the first portion of the attribute s  va
120. alues    M RGE    Fiealthcare    NET C  User   s Manual    Network message exchange is discussed further in one of the following sections     Merge DICOM Message Classes    Before we discuss the process of transferring messages  we must discuss some  basic Merge DICOM classes used to represent a DICOM message     DICOM data elements  MCdataElement class  are identified by a unique  number  MCtag class   A DICOM attribute  MCattribute class  contains the  value of a DICOM data element  An attribute has assigned to it a value  representation  MCvr class   a value multiplicity n  n   and a value type  1  1C   2  2C  3      DICOM messages sent across a network connection on an association are  represented by the MCdimseMessage class  DICOM supports different sets of  attributes  MCattributeSet class   A DIMSE message contains a command set  MCcommandSet class  containing header information used by the DICOM  DIMSE service  plus  optionally  a data set  MCdataSet class  containing DICOM  data being exchanged  The value of a Sequence of Items  SQ  attribute is zero  or more DICOM items  where each item is a set of attributes  These DICOM  items are represented by the MCitem class   See figure below     MCdimseMessage          MCdataSet   a type of MCattributeSet     MCcommandSet   a type of MCattributeSet         MCattributeSet    MCattribute  PN  MCattribute SQ   Value   Doe John value 3 items     MCitem MCattribute  MCattribute    MCitem MCattribute  MCattribute  MCitem MCattribu
121. an be multiply registered to handle many tags  Also  a single  MCattributeContainer object will handle both transmittal and reception of the data  associated with the tag s   If the return value is nu11 you know that there was  not a previously registered attribute container for the attribute     M RGE    Healthcare    Merge DICOM Toolkit    NET C  User s Manual    How to release an  MCattributeContainer object    releaseAttributeContainer    Values for SQ attributes    MCitem    Items in a message  stream    M RGE    Fiealthcare    Releasing Your MCattributeContainer    To  de register  your attribute container class  use the  releaseAttributeContainer method of the MCapplication class  The  method releases the callback object that was registered for the attribute identified  by the MCtag parameter  The callback s methods will no longer be called when  the attribute s value is being received or when the attribute s value is required     The callback s methods will still be called  however  for MCdimseMessage  objects or MCfile objects that were created before this method call was made     Sequences of Items    The DICOM Value Representation SQ is used to indicate a DICOM attribute that  contains a value that is a sequence of items  Each item in the sequence is an  attribute set  MCitem class   Each of the attribute sets can also contain  attributes that have a VR of SQ  This powerful capability allows the nesting of  attribute sets  or the definition of  container  objects  
122. andard has retired the  message ID attribute in response  command messages  To generated  such an attribute in command  messages  specify YES  To NOT use  message ID in response messages   specify NO     DEFAULT  NO    The DICOM standard has retired the  old Recognition Code attribute in  command messages  To generated  such an attribute in command  messages  specify YES  If you do not  want to generate such an attribute   specify NO  ACR NEMA 2 0     DEFAULT  NO    The DICOM standard has retired the  message priority attribute in response  messages  To generated such an  attribute in response messages   specify YES  To NOT use message  priority in response messages  specify  NO     DEFAULT  NO       M RGE    Healthcare    SEND SOP CLASS UID       SEND SOP INSTANCE UID       ARTIM TIMEOUT    ASSOC REPLY TIMEOUT    CONNECT TIMEOUT    INACTIVITY TIMEOUT    INSURE  EVEN UID LENGTH      RELEASE TIMEOUT    M RGE    Healthcare    Section    DIMSE_PARMS    DIMSE_PARMS  DUL_PARMS    DUL_PARMS  DUL_PARMS    DUL_PARMS    DUL_PARMS  DUL_PARMS    Description    Certain DICOM service classes  demand that the affected SOP class  UID be present in the message  To  prevent the library from insuring that  this is done  specify NO  To insure  that Affected SOP class UID is  present  specify YES     DEFAULT  YES    Certain DICOM service classes  demand that the affected SOP  instance UID be present in the  message  To prevent the library from  insuring that this is done  specify NO   To insure 
123. anual    Merge DICOM Toolkit  calls for   the attribute   s   data value    Writing the provideData method    The provideData method is called by the library to request a portion of the  attribute s value  The attribute is identified by the attribSet and tag  parameters     The value is returned in an MCdata object that contains the data buffer   managed or unmanaged   the Length property giving the amount of data in the  buffer  and a bool indicator  IsLast   The buffer must contain an even number  of bytes and may be empty         rsrast property of the returned MCdata object  must be set to true if this is the last portion of the value that will be provided   Merge DICOM will no longer call provideData for this instance of the attribute  after TsLast is returned true  The Length property must be set to the number  of significant bytes in the data buffer     isFirst is set by the library to t rue if this is the first request for the attribute   s  value     If the method cannot comply with the request  it must throw an  MCcallbackCannotComplyException  If the exception is thrown  Merge  DICOM will make no further calls for this instance of the attribute     public MCdata provideData MCattributeSet attribSet  MCtag  tag  bool isFirst      byte   array   new byte 4096   bool isLast   false  uint  size   0     if  unableToProvideData   throw new MCcallbackCannotComplyException          if  isFirst        Perhaps open up the data source            Read the next portion of the v
124. ary message stream to see how the data would be sent over the  network  Also  you can read this binary file in again later to reconstruct the  original message object  Once you have the message object you can use the  usual toolkit methods to examine or alter its contents     Why use message  streams     M RGE 113    Healthcare    Merge DICOM Toolkit                User s Manual    Converting message data  to an XML string    writeTOXML method    Converting an XML string  into a message    readFromXML method    114    Message to XML conversion    The MCabstractMessage provides a writeTOXML method which can be utilized  to convert its derived classes  MCfile and MCdimseMessage  to an XML string     You can convert a list of attributes of an MCfile or MCdimseMessage  along with  their values into an XML string by using the writeTOXML method of the  MCabstractMessage  The writeTOXML method creates an XML string describing  the contents of the MCfile or MCdimseMessage  The XML buffer will be written to  the stream identified by the stream object provided     Note  If MCfile or MCdimseMessage objects contain an attribute with a Value  Representation of SQ  sequence of items   each item in the sequence is  converted into its XML representation     The following example shows how the writeTOXML method is utilized at a high  level     MCfile myFile     a non null file reference   MCxmlOptions xmlOptions   MCxmlOptions XmlOptIncludeBulks    XmlOptExcludeSequences    StreamWriter write
125. ased on their file ID     Delete existing files based on their file ID     Inquire free space available for creating new files within a  file set     Inquire date and time of file creation  or last update if  applicable  for any file within a file set        Merge DICOM Toolkit    NET C  User s Manual    The Merge DICOM Toolkit supplies the MCmediaStorageService that performs  the first two  underlined  file services  That class also implements enhanced  read and write functionality for the creation and maintenance of DICOMDIR files  and its hierarchy of directory entities and directory records  The remaining three  file services are best implemented by the application entity through file system  calls because they are file system dependent operations     File Management Roles DICOM AE s that that perform file interchange functionality are in turn classified  into three roles     File Set Creator  FSC  uses M WRITE operations to create a DICOMDIR  file and one or more DICOM files     File Set Reader  FSR  uses M READ operations to access one or more  files in a DICOM file set  An FSR shall not modify  any files of the file set  including the DICOMDIR file      File Set Updater  FSU  performs M READ  M WRITE  and M DELETE  operations  It reads  but shall not modify the content  of any DICOM files other than the DICOMDIR file  It  may create additional files by means of an M WRITE  or delete existing files by means of an M DELETE     The concept of these roles is used within th
126. ass and servers will use the start Listening method of that  class     Preparing a Proposed Context List    Before you establish an association connection you must determine what DICOM  Services you are prepared to handle and perhaps create an  MCproposedContextList object to encapsulate the service information     Using a Pre configured Proposed Context List    If you wish to propose the services that are configured in a    service list name   section of the Application Profile  mergecom app  file  you can use the  MCproposedContextList getObject factory method to retrieve an  MCproposedContextList object based on the configured services     MCproposedContextList myContext    MCproposedContextList getObject  service list name       Creating Your Own Proposed Context List    You also have the option of creating your own proposed context list at run time   An MCproposedContextList object represents a collection of  MCproposedContext objects  Each MCproposedContext object represents     e one DICOM service  SOP class   e asetoftransfer syntaxes you can support for the service    e a declaration of the roles you will play  SCU and or SCP     Before you can create an MCproposedContext object you must create one or  more MCtransferSyntaxList objects representing the transfer syntaxes you  want to use for the services  The MCtransferSyntaxList class represents a  collection of MCtransferSyntax objects     Using a Pre configured Transfer Syntax List    Again  you have the option of 
127. ation Context from outside the tree can be explicitly  replaced     If a Content Item in the SR Document Content tree has Observation Context  different from the context already encoded elsewhere in the IOD  the context  information of that Content Item shall be encoded as child nodes of the Content  Item in the tree using the HAS OBS CONTEXT relationship  i e   Observation  Context is a property of its parent Content Item     The context information specified in the Observation Context child nodes  i e   target of the HAS OBS CONTEXT relationship  adds to the Observation Context  of their parent node Content item  and shall apply to all by value descendant  nodes of that parent node regardless of the relationship type between the parent  and the descendant nodes  Observation Context is encoded in the same manner  as any other Content Item  Observation Context shall not be inherited across by   reference relationships     Observation DateTime is not included as part of the HAS OBS CONTEXT  relationship  and therefore is not inherited along with other Observation Context   The Observation DateTime Attribute is included in each Content Item which  allows different observation dates and times to be attached to different Content  Items     The IOD may specify restrictions on Content Items and Relationship Types that  also constrain the flexibility with which Observation Context may be described     The IOD may specify Templates that offer or restrict patterns and content in  Obse
128. ations are  being performed  The MoveDestination property sets or gets that value from  attribute  0000 0600      C STORE request messages contain an attribute the provides the DICOM AE  Title of the DICOM AE which invoked the C MOVE operation from which a C   STORE sub operation is being performed  The MoveOriginator property sets  or gets that value from attribute  0000 1030      C STORE request messages contain an attribute that provides the Message ID  of the C MOVE request message from which the C STORE sub operation is  being performed  The MoveOriginatorMessagelId property gets or sets that  value from attribute  0000 1031      83    Merge DICOM Toolkit      OffendingElements    RemainingSubOperations    RequestedSopClassUid    RequestedSoplInstanceUid    ResponseStatus    WarningSubOperations    MCfile    Get the contained attribute  sets with   getDataSet   getMetalnfo    84    NET C     User s Manual    Some DIMSE services place the data element tag number of the element or  elements involved in an error in their response messages  The  OffendingElements property gets or sets these tag numbers  as an array of  unsigned integers  from the command set attribute  0000 0901      The DIMSE services that use C GET or C MOVE operations place the number of  C STORE sub operations remaining to be sent in their response messages  The  RemainingSubOperations property sets or gets that value from attribute   0000  1020      Normalized DIMSE services provide the SOP Class UID as
129. ax              129  Setting the file system file associated with the MCfile object                       129  Listing the file s                                                      130  Using the MCmediaStorageService Class                                                   130  Constructing an MCmediaStorageService                                                     131  Heading  Files    noie pere                 131  Creating and Writing Files                     ssssssseeeeeeneenneens 133          DIGOMDIR Tile wis        eerta teet tha Ee    eta                 134  um                              134  Constructing a new MCdir                               135  The MCdirReGordi class                      etre cett etate                   perd 135  Navigating the                                  136  Adding and Deleting DICOMDIR                                                                  136   Memory                                           137  Assigning Pixel                 137  Using Attribute                                        138  Replacing Merge DICOM Toolkits Memory Management Functions          139  Accessing Data When                                   139  Saving Received Images Directly to                                                               139   DICOM Structured                                              141  Structured Report Structure and                                                                  141  Content Item Types          
130. ay be contained in the merge log file           Then the license key you specified in the System Profile  mergecom pro  is  checked for validity  If the key validation fails or the license key is not in the  System Profile  an MCinvalidLicenseInfoError exception is thrown  Any  further Library calls will result in an MCnotInitializedError runtime  exception        At any time you can check to see if the Library has been initialized by using the  static mcIsInitialized method of the MC class  The method returns t rue if  the mcInitialization method has already been called successfully     Note that the Library can not be used from different application domains at the  same time  In order to use it from a different application domain the Library must  be released first in the application domain that initialized it     M RGE    Healthcare    Merge DICOM Toolkit      mcLibraryRelease    mcGetVersionString    Dispose    M RGE    Fiealthcare    NET C  User   s Manual    Releasing the library    The static mcLibraryRelease method of the MC class is used to release the  resources used by the Merge DICOM library  The method performs a graceful  shutdown of the library  mcInitialization must be called again before  using the library  This method is normally called before exiting a Merge DICOM  application  This method will release all resources allocated by the Merge  DICOM C C   Toolkit dynamic link library     mcLibraryRelease must be called in the same application domain in which  t
131. ble prompting for correct  service command pairs      Specify transfer syntax of message  where  syntax      il     implicit little endian      el        explicit little endian   or    eb     explicit  big endian     This command validates the specified message file  printing errors  warnings   and information generated to standard output  The user can force the message  to be validated against a specified DICOM service command pair if the message  does not already contain this information     If the service command pair is not contained in the message  the program will list  the possible service command pairs and the user can select one of them  When  using this program with a batch file  this option can be shut off with the  q flag     The default transfer syntax is implicit little endian  the DICOM default transfer  syntax   If the transfer syntax is incorrectly specified  the message cannot be  validated     While mc3valid   s message validation is quite comprehensive  it does have  limitations  These limitations are discussed in detail in the description of the  validate method of the MCdimseMessage class in the Assembly Windows  Help File  The DICOM Standard should be always be considered the final  authority        48    M RGE    Fiealthcare    Merge DICOM Toolkit    _NET C  User   s Manual    DICOM Message  Generation Tool    mc3file    Sample DICOM messages can be generated with the mc3file utility  You  specify the service  command  and transfer syntax and mc3file g
132. callback class to store the Pixel Data in fewer big blocks  or  one large block  and keep them in primary memory for rapid access              Merge DICOM provides a number of implementations to the MCdataSink  interface  The MCfileDataSink class implements a data sink that writes to a file   A file name is supplied to the constructor  and the class will automatically write  the supplied data to this file  The MCstreamDataSink class implements a data  sink that writes to a System  IO Stream derived instance  For example  an  instance of the System IO FileStream class can be used to write to a file   Finally  the MCmemoryDataSink class also implements the MCdataSink  interface  This class implements a data sink where the data is stored in memory     Retrieving an Attribute Value s Properties    You can obtain the length of an attribute s value by using the ValueLength  property of the MCattribute class  The length returned is the stream length of the  attribute  It is the sum of all lengths of all values if the attribute is multi valued  If  the VR is a text VR and the attribute is multi valued  the length also includes the  numbers of separators     If the attribute s value is a DICOM NULL  zero is returned     If an attribute has a value representation of SQ  the number of items in the  sequence is returned        MCattributeSet as     non null referenc  MCtag tag   new MCtag 0x0008  0x0010      uint length   as tag  ValueLength     Please refer to the Assembly Windows Help 
133. care    Merge DICOM Toolkit      This can be tricky         Performance Tuning    getValueToMethod  setValueFromMethod       Performance Tuning    read  sendRequestMessage         Performance Tuning    Read streamOut    M RGE    Healthcare    NET C  User   s Manual    Replacing Merge DICOM Toolkit   s Memory Management  Functions    When using registerAttributeContainer to replace Merge DICOM  Toolkit   s memory management functions  the user would still use the MCattribute  readBulkData and setValue methods to access the image  When requested   Merge DICOM will receive or supply the attribute   s value to the attribute  container     Accessing Data When Needed    When dealing with large multi frame images  it is sometimes impractical to load  the entire image into memory at once  registerAttributeContainer can  be used to access image data only when needed  The memory requirements of  an application can be greatly reduced by using this functionality     When reading messages from the network  the MCassociation read method  supplies the user s registered callback class with the image data  If the data  does not need to be byte swapped into the system s native endian  the amount of  data supplied with each call is dictated by the PDU size of the data received   When the data is byte swapped  the length of data is specified by the   WORK BUFFER SIZE configuration value  As the data is received  it would  typically be written to disk in this scenario  When the read method return
134. cases these routines also allow the use of uint values to represent a DICOM tag     As mentioned before  a DICOM tag is usually written as an ordered pair of two  byte numbers  The first two bytes are sometimes called a group number  with  the last two bytes being called an element number  e g    0010  0010    0038   0010            M RGE 7    Healthcare    Merge DICOM Toolkit                User s Manual    The MCtag class addresses the fact that DICOM allows both private and non   private attributes  The group number for private attributes must always be odd   while the group number for non private attributes must always be even  Private  attributes belong to a private group  identified by a private code string  and  private groups may only have 254 elements  numbered 1 through 255     Constructing non private tags    Non Private Tags Non private tags may be constructed using a 32 bit integer number  or using a  16 bit group number plus a 16 bit element number     MCtag tag   try    tag   new MCtag 0x00080010      catch  MCillegalArgumentException e           or   try    tag   new MCtag 0x0008  0x0010      catch  MCillegalArgumentException e              The group and element numbers may be specified as two unsigned integers  An  MCillegalArgumentException will be thrown if the group number portion of the tag  number is odd     Private Tags  Constructing private tags    Tags for private attributes are constructed by providing a private group code  string in addition to the 
135. ce drivers  and  file system combinations for which DICOM media interchange applications may  be developed     Similar to working with streams  if your application will read DICOM files  you  must use a class that implements the MCdataSource interface  If your  application will write DICOM files  you must use a class that implements the  MCdataSink interface  These interfaces have been discussed in detail in  previous sections     You will find that the DICOM Toolkit provides powerful DICOM media  functionality by supplying your application with        agreatly simplified way to deal with the complex encoding and decoding  required within a DICOM file     e anAPI that is very consistent with that used for the maintenance of DICOM  messages used in network functionality  many of the encoding and decoding  methods already described apply equally to DICOM file attribute sets     To perform all this functionality on your medium of choice  you need only supply  the two file system interface implementation  just discussed  and use the  methods of the MCmediaStorageService class     M RGE    Healthcare    Merge DICOM Toolkit      A Media Storage Service  is associated with your  application    Three ways  To read a media file    Pass OB OW OF data  to registered callbacks  if  any     readFile    M RGE    Fiealthcare    NET C     User   s Manual    MCmediaStorageService File System Interface            writeFile      MCdataSink        DICOM  Media  Application        DICOM  Media   
136. creating an MCtransferSyntaxList object based on   configuration information  or you can create a new transfer syntax list at run time   To create an MCtransferSyntaxList object from transfer syntaxes configured in a      syntax list name    section of the Application Profile  mergecom app  file  use   the getObject factory method of the MCtransferSyntaxList class     MCtransferSyntaxList mySyntaxes    MCtransferSyntaxList getObject  syntax list name  name       M RGE    Healthcare    Merge DICOM Toolkit      MCsopClass    AbstractSyntax  SCProle   SCUrole  ServiceName  TransferSyntaxList    M RGE    Healthcare    NET C  User   s Manua    Creating Your Own Transfer Syntax List    To create your own transfer syntax list you must create an array containing the  predefined instances of the MCtransferSyntax objects you want to support  and  call the constructor for the MCtransferSyntaxList class     The MCtransferSyntax class contains a number of static properties which return  MCtransferSyntax instances for each of the defined DICOM transfer syntaxes     MCtransferSyntax   mySynArray   new MCtransferSyntax 2            mySynArray 0    MCtransferSyntax ExplicitBigEndian   mySynArray 1    MCtransferSyntax JpegBaseline     MCtransferSyntaxList myTSL   new  MCtransferSyntaxList     MYSYNS     mySynArray      Creating Your Own Proposed Context List    For each service you want to include in your MCproposedContextList you must  have an MCsopClass object  You can only get MCsopClass ob
137. cs that apply to them no matter what  message they are used in  These characteristics are specified in the DICOM  Data Dictionary  Part 6 of DICOM  and are Value Representation  VR  and  Value Multiplicity  VM      Value Representation can be thought of as the    type specifier    for the values that  can be assigned to an attribute  This includes the data type  as well as its  format  The VR s defined by DICOM are listed in Table 3  You should refer to  Part 5 of the standard for a detailed description of their legal values and formats     19    Merge DICOM Toolkit    _NET C  User s Manual    Table 3  DICOM Value Representations  VR s     VR Name   VR   Name                     ane       Other Word String            Value Multiplicity A single attribute can have multiple values  Value Multiplicity defines the number  of values an attribute can have  VM can be specified as 1      1 k  or 1 n  where  k is some integer value and n represents    many     For example  Part 6 specifies  the VM of Scheduled Discharge Time  0038  001D  as 1  while the VM of  Referenced Overlay Plane Groups  2040  0011  is 1 99     Message Handling    MCattributeSet Given the number of services and commands specified in Table 1 and Table 2  it is  clear that there are a great deal of messages to manage in DICOM  Remember   each service command pair implies a different message  Fortunately  you will  see later that Merge DICOM Toolkit saves the application developer a great deal  of work in the messag
138. d from the  remote application entity   s entry in the Application Profile     Starting an Association Acceptor    If your application will be an association acceptor  a server   the MCassociation  class provides the startListening method to start up a thread that will listen  for and process requests from remote DICOM Application Entities that wish to  start an association with your local Application Entity     Merge DICOM handles every association request that is received in a separate  thread  You must supply an instance of a class that implements the MCacceptor  interface  When the new association request is received  Merge DICOM calls the  start method of your MCacceptor class instance to process the association   passing it a reference to a newly created MCassociation object     Three forms of the startListening method exist  One allows you to specify  which TCP IP port is to be listened on  other will wait for association connections  on the port specified by the TCPIP_LISTEN_PORT configuration parameter  or  on port 104  if the TCPIP_LISTEN_PORT configuration parameter is missing  from the System Profile  mergecom pro   The third form allows an application to  specify an IPEndPoint object representing the specific address and port number  to listen on  This form also allows starting a    dual mode    listener that accepts both  IPv4 and IPv6 connections  if the operating system supports such listeners     Note that a given Application Entity may only make this call on
139. d in the VM field     We recommend that you implement templates as a subroutine or function call  In  that case  the inclusion of the template will be implemented as a call to that  template with passing parameters  Some of the templates defined in DICOM Part  16 already have predefined parameters and they are indicated by a name  beginning with the character         152 M RGE    Healthcare    Merge DICOM Toolkit    NET C     Overview of the Merge DICOM Toolkit SR Classes    MCserializableToDataSet      MCserializableToDataSet            Fields      8 Properties     Chiktren          Conceptame   1 13 ContentitemType  POM DataContext   1     NodeName  1               ObservationDate    MCrelationshipType       RelationshioType   Enum    CONTAINS  HAS_OBS CONTEXT  HAS ACQ CONTEXT  HAS CONCEPT MOD  HAS PROPERTIES  INFERRED FROM  SELECTED FROM  UNDEFINED       i  i  i  i  i  i  i  1  i  i  1  1  i  1  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  1  D  i     i  1                        MCcontainerItem        Class      omm 4   P MCcontentitem  Is   b MCcontentitem    Reds  ai Fields 3 Properties  iB Properties      ContentitemType       ContentitemType      ContentitemType      ContentitemType 3    7       vidket      PersonName      bate pm    Methods   Methods    Methods  ti Nested Types             MCtoxtItem    Class      MCcontantItam       Cass   gt  MCcontentitam   MCcontent        MCcontent           Fields   Fields   Fields         si Properties   Properti
140. d sendResponseMessage  MCdimseMessage requestMsg   short statusCode    public void sendResponseMessage  MCdimseMessage requestMsg   MCdimseMessage responseMsg  short statusCode              This sendResponseMessage method allows you to respond to a message  received from the remote application  It is called after a successful  MCassociation read call  The requestMsg parameter identifies which DICOM  message is being responded to        116    M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Merge DICOM Toolkit  handles the command set  for you    M RGE    Fiealthcare    The statusCode parameter provides the status of the requested operation and  must be a valid response code for the service involved  Response codes are  defined in MCdimseSerivce  Many DICOM services do not require a response of  more than just a status  Others  however   e g   C FIND RSP  require the  setting of several message attributes     The responseMsg parameter  if provided  must have been constructed for the  same service as the requestMsg  and for an appropriate command  For  example  if responding to a C STORE request message  the responseMsg would  be constructed as follows     responseMsg   new MCdimseMessage   MCdimseService C STORE RSP   requestMsg ServiceName          Response codes for specifiC C   DICOM commands are described in the  Assembly Windows Help File and in Part 4 of the DICOM Standard  Constants  for the various request and response codes are defined in th
141. dElementException will be thrown if the data element is  not defined in the data dictionary     Constructing non standard data elements    Since non standard data elements are by definition not in the data dictionary  you  must supply the properties of data elements that are not recorded in the data  dictionary  These properties must be defined     e The name of the data element  If name is not provided  the attribute will be  named     lt UNKNOWN gt     by the library  If provided  name must not be null and  must have a length between 0 and 30  If longer than 30 it will be truncated    If O  i e      the name will be reported as blank in reports     e The vr parameter specifies the Value Representation of the data element  It  must be one of the MCvr instances that are static members of the MCvr  class  An exception will be thrown if an invalid MCvr reference is provided   These pre defined MCvr object references are available to use     VrAE  vrAS  vrCS  vrDA  vrDS  vrDT  vrlS  vrLO  vrLT  vrPN        vrST           vrUT  vrUI  vrSS  vrUS          vrSL  vrUL  vrFL  vrFD  vrUN  vrOB   vrOW  vrOL  vrSQ    e The data element s Value Multiplicity is specified by the n and m parameters   The following table describes the effect of specifying zero  one or both of the  n and m parameters     n specified   m specified Value Multiplicity is       1 many  no upper limit         must have exactly n values          n     m  atleast n values  no more  than m values     Use Short  MAX VA
142. dName Equals     DIR_REC_PATIENT            MCitem item   curRec RecordItem       Access patient directory record tags here          curRec   rootRec getNextChild               In the above example  the directory records below the root record could be  traversed by calling the getFirstChild and getNextChild routines     Please refer to the MCdirRecord and MCdir classes in the Assembly Windows  Help File for further details on traversing a DICOMDIR     Adding and Deleting DICOMDIR Records    The addition and deletion of directory records are handled using the  addChildRecord  deleteChild  and delete methods  These calls are prototyped  as follows     public MCdirRecord addChildRecord  String newItemName    public void deleteChildren     public void delete       When adding a directory record  you must supply a string identifying the  directory record item type  newrtemName   For example  if you wished to add a  Study record  newItemName would be a string containing  DIR STUDY   The  method returns an MCdirRecord object encapsulating the newly created directory  record     M RGE    Healthcare    Merge DICOM Toolkit      Automatic deletion of  referenced items    Make sure you are  committed      Ce  Performance Tuning    Really   It   s not a memory leak    NET C     User   s Manual    When deleting records using deleteChildren or delete no parameters are  required  When    directory record is deleted  all lower level directory entities   and the directory records contained wit
143. data is returned     100 M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Abstract Message  Routines    MCabstractMessage    MCcompression    MCstandardCompressor  MCstandardDecompressor  MCrleCompressor  MCrleDecompressor    M RGE    Fiealthcare    Working with MCabstractMessage Derived Classes    The MCabstractMessage class is an abstract class that implements several  routines that are common between DIMSE messages  MCdimseMessage  and  DICOM files  MCfile   These routines include compression and validation of  attribute sets     Compression and Decompression    The MCabstractMessage derived classes  MCfile and MCdimseMessage   provide a duplicate method  which can be utilized to do compression   decompression  or both  The duplicate method will create a copy of the MCfile or  MCdimseMessage that is encoded in a new transfer syntax  If the transfer  syntax of the source message is compressed  a decompressor must be supplied  to the duplicate method  If the result transfer syntax is compressed  a  compressor must be supplied     The MCcompression interface defines an interface for compressors and  decompressors utilized by Merge DICOM  NET  Merge DICOM supplies a  number of compressors and decompressors that implement this interface and  are defined in the following sections  The duplicate method of  MCabstractMessage requires that the compressor and decompressor supplied to  itimplement the MCcompression interface  The following example shows how 
144. ding of conventional textual  reports as SR Documents  as well as their rendering     e Enhanced SR Information Object Definition     The Enhanced Structured  Report  SR  IOD is a superset of the Basic Text SR IOD  It is also intended  for the representation of reports with minimal usage of coded entries   typically Document Title and headings  and a hierarchical tree of headings  under which may appear text and subheadings  In addition  it supports the  use of numeric measurements with coded measurement names and units   Reference to SOP Instances  e g   images or waveforms or SR Documents   are restricted to display at the leaf level of this primarily textual tree  The  Enhanced Structured Report  SR  IOD enhances references to SOP  Instances with spatial regions of interest  points  lines  circle  ellipse  etc    and temporal regions of interest     e Comprehensive SR Information Object Definition     The Comprehensive  SR IOD is a superset of the Basic Text SR IOD and the Enhanced SR IOD  which specifies a class of documents  the content of which may include  textual and a variety of coded information  numeric measurement values   references to the SOP Instances and spatial or temporal regions of interest  within such SOP Instances   Relationships by reference are enabled  between Content Items     There are more specific SR IODs defined in the DICOM  like Key Object  Selection Document and Mammography CAD SH  These IODs use the same  method to encode data but differ in c
145. ds to  have a value  Attributes can be required  optional  or only required under certain  conditions  conditional attributes   Conditional attributes are always specified  along with a condition  The value types defined by DICOM are listed in Table 4   Note that a null valued attribute has a value  that value being null  zero length      Table 4  DICOM Value Types  VT s     Value Type Description   VT     The attribute must have a value and be included in the message  The  value cannot be null  empty      The attribute must have a value and be included in the message only  under a specified condition  The value cannot be null  If that condition  is not met  the attribute shall not be included in the message     The attribute must have a value and be included in the message only  under a specified condition  If the value for the attribute is unknown  and cannot be specified  its value shall be null  If that condition is not  met  the attribute shall not be included in the message    The attribute is optional  It may or may not be included in the message   If included  the attribute may or may not have a null value     2 The attribute must have a value and be included in the message  If the  value for the attribute is unknown and cannot be specified  its value  shall be null        Private Attributes    The DICOM Standard allows application developers to add their own private  attributes to a message as long as they are careful to follow certain rules  A  private attribute is 
146. e  message structure  It is important to understand that depending on the way in  which your MCdimseMessage  MCfile or MCdataSet object was created  this  validation overhead can occur at different points in your application  see Table 20        Performance Tuning    Table 20  Point of performance overhead associated with attribute set validation     Message Object Construction Method   Point at which file access overhead for  validation occurs    new MCdimseMessage new MCdimseMessage  if command service supplied    new MCdimseMessage MCdimseMessage validate    if no command service supplied Note  You must use setServiceCommand  method before validating and or sending a  message created in this manner           M RGE 109    Fiealthcare    Message Object Construction Method    new MCdimseMessage MCdataSet     if command service supplied when  constructing MCdataSet    new MCdimseMessage MCdataSet     if no command service supplied when  constructing MCdataSet    MCdimseMessage    read  MCassociation    new MCfile  if command service supplied  new MCfile    if no command service supplied    new MCfile  MCdimseMessage     if command service supplied when  constructing MCdimseMessage    new MCfile  MCdimseMessage     if no command service supplied when  constructing MCdataSet    new MCdataSet  If command service supplied  new MCdataSet    If no command service supplied    User s Manual    Point at which file access overhead for  validation occurs    new MCdataSet      MCdimseMess
147. e DICOM conformance statement of  an application entity that supports media interchange to more precisely express  the capabilities of the implementation  Conforming applications shall support one  of the capability sets specified in Table 8  DICOM conformance is described in  greater detail in the next section     Table 8  Media Application Operations and Roles    Media Roles M WRITE M READ M DELETE  INQUIRE M INQUIRE  ILE SET FILE    FSU       32 M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C  User   s Manual    Conformance    Part 2 of DICOM discusses conformance and is important to any AE developer   For an application to be DICOM conformant it must     e meet the minimum general conformance requirements specified in Part 2 and  service specific conformance requirements specified in Part 4  Network  Services   and or Parts 10 and 11  Media Services      e have a published DICOM conformance statement detailing the above  conformance and any optional extensions     Conformance also applies to aspects of the communications protocol that are  managed by the DICOM Toolkit  Most parameters are configurable by your  application  The conformance statement for the Merge DICOM Toolkit in  Appendix C  DICOM Conformance Statement lists all these protocol parameters  and how they can be configured     Part 2 also deals with private extensions to the DICOM Standard by defining  Standard Extended Services  Standard Extended Services give your  application a
148. e MCdimseService  class     If responseMsg is not provided  Merge DICOM will create one automatically     Some DICOM services require that values for certain command set attributes   i e  group 0 attributes  be set  Merge DICOM automatically adds command set  attributes when an MCdimseMessage is constructed  With the exceptions listed  below  you must set any command set attribute values before sending the  message  However  this method will set the following attribute values for you     if  you have not set them        e        group length attribute  0000 0000  value is always set by Merge DICOM  Toolkit     e  fthe message command requires it  the Affected SOP Class UID attribute   0000 0002  value is set to the service s abstract syntax UID     e The command attribute  0000 0100  value is always set by Merge DICOM  Toolkit     e The Response Message ID attribute  0000 0120  value is set to the message  ID of the last received Request message for this association     e The Data Set Type attribute  0000 0800  value is always set by Merge  DICOM Toolkit     117    Merge DICOM Toolkit      Attribute values  can be stored  in your own  container class    MCattributeContainer    Server callbacks    Client callbacks    118    NET C  User s Manual    Using Attribute Containers    The MCattributeContainer is the interface for classes that will provide methods  for the library to get and set a given attribute s value  A class which implements  this interface is registered with the 
149. e Set  A  DICOM file set is defined as a collection of DICOM files sharing a common  naming space within which file ID s are unique  e g   a file system partition   A  DICOM File Set ID is a string of up to 16 characters that provides a name for the  file set     A File ID is a name given to a DICOM file that is mapped to each media format  specification  in Part 12 of DICOM   A file ID consists of an ordered sequence of  one to eight components  where each component is a string of one to eight  characters  One can certainly imagine mapping such a file ID to a hierarchical  file system  and this is done for several media formats in Part 12  It is important  to note that DICOM states that no semantic relationship between DICOM files  shall be conveyed by the contents or structure of file ID s  e g   the hierarchy    This helps insure that DICOM files can be stored in a media format and file  system independent manner     The allowed characters in both a file ID s and file set ID s are a subset of the  ASCII character set consisting of the uppercase characters  A Z   the  numerals  0 9   and the underscore          The DICOMDIR    The DICOM Directory File or DICOMDIR is a special type of a DICOM File  A  single DICOMDIR must exist within each DICOM file set  and is always given the  file ID  DICOMDIR   It is the DICOMDIR file that contains identifying information  about the entire file set  and usually  dependent on the Application Profile  a  directory of the file set s conten
150. e and  addValue methods     try    MCtag tag   new MCtag 0x000101001    MCattribute myAttr   new MCattribute  tag    myAttr 0    new MCpersonName     Smith John        myAttr 1    new MCpersonName   Smith Jonathan     myAttr setValue new MCpersonName   Smith John      myAttr addValue  new MCpersonName   Smith Jonathan        catch  MCattributeNotFoundException     1     catch  MCincompatibleValueException     1     catch  MCvrAlreadyValidException                            Assigning a NULL attribute value    DICOM allows attributes to have a NULL value  that is the value   s length is zero    You can use the set Value or addValue routines to assign a value to NULL     MCattributeSet myAttrSet     non null referenc       myAttrSet addValue 0x00080010U  null    myAttrSet setValue 0x00080020U  null      Note  Both of these methods may be used to set the first or only value of an  attribute to NULL  zero length   The methods may be called to set  subsequent values of multi valued attributes only if the attribute s value  representation is a text type that allows the backslash  Y  character as a  field delimiter in streamed messages  Attributes with the following Value  Representations may call this method to set values subsequent to the  first value  AE  AS  CS  DA  DS  DT  IS  LO  LT  PN  SH  TM  UI  An  MCincompatibleVrException is thrown if an attempt is made to set a  value NULL and the attribute s Value Representation does not allow it     Assigning a non NULL attribute    
151. e and also performs query and  retrieval of images from two separate DICOM AE   s  it might contain sections like                                                       the following    Acme Store SCP   PORT NUMBER   104  HOST NAME   acme_sunl  SERVICE_LIST   Storage_Service_List   Acme OR SCP  PORT  NUMBER   104  HOST NAME   acme hp2  SERVICE  LIST   Query Service List    Acme Store SCP and Acme QR SCP are the AE titles for the applications you  wish to connect with  The storage server runs on a Sun computer having the  host name acme_sun1  while the query retrieve server runs on an HP  workstation with the host name acme  hp2  Both servers listen on port 104  the  standard DICOM listen port   The host name and port combined  make up the  TCP IP network address for a listening server application  See Figure 10     Besides entering a hostname for the HOST  NAME parameter  it is also possible  to simply enter an IP address  Both IPv4 addresses and IPv6 addresses are  allowed in this field                 Service List The SERVICE LIST is set to the name of another section in the application  profile that lists the DICOM services that will be negotiated with that application  entity  For example  in this case these sections might look like      Storage Service List                                                                                                                             SERVICES SUPPORTED   114 Services in list  SERVICE 1     STANDARD MR  SERVICE 2   STANDARD CR 
152. e application along with sample working source code give you  valuable examples to work from when developing your own DICOM applications     The DICOM Standard and the Merge Healthcare DICOM Toolkits allow  applications to add private information to a DICOM message or file  For most  application developers  this is more than sufficient  For applications that need to  define their own non standard private network or file services  an optional Merge  DICOM Database Manual is available which describes the use of additional tools  to extend the data dictionary     Development Platform Requirements    The Merge DICOM Toolkit requires version 2 0 of the  NET Framework  The  toolkit requires the C toolkit run time library and currently requires 32 bit or 64 bit  Microsoft Windows platforms  depending on what toolkit version you have  that  supports the  NET framework     Your development environment  or at a minimum your target environment   should run on a machine with a network interface over which you can run the  TCP IP protocol  The DICOM Toolkit library supplies you with the DICOM  protocol that runs on top of TCP IP     If your application will write DICOM files to interchangeable media  you will need  a device driver for the media storage device and a programming interface  between your operating system and the file system on that device     Assembly Structure    Understanding the organization and components of the Merge DICOM Assembly  is important to developing an efficien
153. e as a quick reference than paging through two or three parts of  the DICOM Standard  message txt also specifies the contents of items and  files  see discussions of Sequence of Items and DICOM Files later in this  document   Remember though that the DICOM Standard is the final word and  that message txt has its limitations as described further below     The validate methods do not validate the attributes that make up the  command portion of a DICOM message  Command set attributes  attributes with  a group number less than 0008  are also not specified in message txt  The  Merge DICOM Toolkit Library sets as many of the command group attributes as  possible automatically  In some services  your application may need to set  command set attributes if you do not use one of the sub classes of the  MCdimseService class     105    Merge DICOM Toolkit                  An excerpt of message txt follows for the service command pair                            User s Manual    DETACHED PATIENT MANAGEMENT   N GET RSPasanillustration  For each    attribute in the message  at least one line of data is specified  This first line  includes the tag  attribute name  value representation  and value type   Additional lines may be included for the attribute to list conditions  enumerated  values  defined terms  and item names for attributes with a VR of SQ  You  should refer to the DICOM Standard  parts 3 and 4  for a detailed description of    particular conditions and their meanings     DETACHED
154. e disables this checking     What can be done to reduce the memory requirements of the Merge DICOM  Toolkit     There are several methods for reducing the memory requirements of Merge  DICOM Toolkit  The first approach is to construct  empty  MCfile   MCdataSet and MCdimseMessage objects by not specifying any service or  command parameters  These constructors reduce memory by not reading in  all of the information needed for validation of messages and files  respectively  This approach will also improve performance     163    Merge DICOM Toolkit      164    NET C     User s Manual    There are several configuration values that reduce Merge DICOM Toolkit s  memory requirements  The following describes each of these options     FORCE OPEN EMPTY ITEM     This configuration option performs the same  function as constructing empty MCdimseMessage objects  except that it is for  items  It is especially useful for reducing the amount of memory used when  creating large DICOMDIRs        LARGE DATA STORE and LARGE DATA SIZE     These options control the  ability of Merge DICOM to store pixel data in temporary files instead of RAM   This functionality is enabled by setting LARGE DATA STORE to FILE  and  adjusting LARGE DATA SIZE to the size of data element that you want  spooled to temporary file  Note however that this will decrease performance     What can be done to increase the performance of the Merge DICOM Toolkit     There are several Merge DICOM configuration values that impact 
155. e handling arena     DICOM specifies the required contents of each message in Parts 3  4  and 7 of  the standard  For each attribute included in a message  additional characteristics  of the attribute are defined that only apply within the context of a service  These  characteristics        Enumerated Values  Defined Terms  and Value Type     Enumerated values vs  DICOM specifies that some attributes should have values from a specified set of   defined terms values  If the attribute is an enumerated value  it shall have a value taken from  the specified set of values  A good example of enumerated values are  M  F  O   for Patient   s Sex  0010  0040  in Storage services  If the attribute is a defined    20 M RGE    Healthcare    Merge DICOM Toolkit      Value type    MCfile  MCfileMetalnfo    M RGE    Healthcare    NET C  User   s Manual    term  it may take its value from the specified set  or the set may be extended with  additional values  An example of defined terms are  CREATED  RECORDED   TRANSCRIBED  APPROVED  for Interpretation Status ID  4008  0212  in  Results Management services  If this set is extended by an application with  another term  such as IN PROCESS  it should be documented in that  application   s conformance statement     The most important characteristic of an attribute that is specified on a message  by message basis  is the Value Type  VT   The VT of an attribute specifies  whether or not that attribute needs to be included in a message and if it nee
156. e identifier  UID  Merge  DICOM will use to identify private  transfer syntax 1  When this value is  set to     lt none gt      private transfer syntax  support is shut off     DEFAULT    none      When set to YES  Merge DICOM will  interpret private transfer syntax 1 as  being encoded in little endian format     DEFAULT  YES    When set to YES  Merge DICOM will  interpret private transfer syntax 1 as  being encoded in explicit VR format     DEFAULT  YES    When set to YES  Merge DICOM will  interpret private transfer syntax 1 as  having its pixel data tag  7fe0 0010   being encoded as undefined length in  the same manner as the JPEG and  RLE transfer syntaxes are encoded     DEFAULT  NO       M RGE    Healthcare    PRIVATE SYNTAX 2 SYNTAX    PRIVATE SYNTAX 2 LITTLE ENDIAN    PRIVATE SYNTAX 2 EXPLICIT  VR    PRIVATE SYNTAX 2 ENCAPSULATED    INITIATOR              RECEIVER              M RGE    Healthcare    Section    ASSOC_PARMS  ASSOC_PARMS  ASSOC_PARMS    ASSOC_PARMS  DIMSE_PARMS  DIMSE_PARMS    Description    The unique identifier  UID  Merge  DICOM will use to identify private  transfer syntax 2  When this value is  set to     lt none gt      private transfer syntax  support is shut off     DEFAULT   lt none gt     When set to YES  Merge DICOM will  interpret private transfer syntax 2 as  being encoded in little endian format     DEFAULT  YES    When set to YES  Merge DICOM will  interpret private transfer syntax 2 as  being encoded in explicit VR format     DEFAULT  YES
157. e parameters    Description     SERVICE_TABLE  List of service names and numbers  This list registers every  service available to an Application Entity  The parameters  associated with  SERVICE_LIST  are  NUMBER OF SERVICES SUPPORTED  the number of  service names that will be listed immediately following  NUMBER OF SERVICES SUPPORTED  and one entry for  each supported service       lt service_number gt     One section number for each of the above services registered  in  SERVICE TABLE   Each section contains a Service Name   a DICOM SOP Class UID for the Service  a flag that tells  whether it is a BASE or META Service  SOP  and a list of  commands supported for that service      ITEM TABLE  One item name and number for each DICOM item that can be  encoded in an attribute of Value representation SQ  Sequence  of Items         210 M RGE    Healthcare    Merge DICOM Toolkit               User   s Manual       Appendix E  XML structure    The Merge DICOM Toolkit provides an API to convert a DICOM message  file or    attribute set into an XML string  The following displays the basic structure of the  XML string     Base64 encoding of bulks and attributes with VR UN      lt  xml version  1 0  encoding  utf 8   gt     DcmFile       FileMetaInfo Service  STANDARD SEC CAPTURE  Command  C STORE RQ       Attribute Tag  00020001  VR  OB  Name  File Meta  Information Version  Length  2  gt AAE  lt  Attribute gt     Attribute Tag  00020002  VR  UI  Name  Media Storage  SOP Class UID  Lengt
158. e pixel data has been read in without any  errors  If your callback class throws MCcallbackCannotComplyException   the library will fail its current operation        Supplying Pixel Data a block at a time is especially useful for very large Pixel  Data and or on platforms with resource  e g   memory  limitations  In this case  you would also want to set LARGE DATA  STORE to the value FILE in the  Service Profile  and Merge DICOM Toolkit will store the Pixel Data value in a  temporary file                 If your application runs on a resource rich system  you should set  LARGE DATA STORE to the value MEM in the Service Profile  and Merge DICOM  Toolkit will keep the Pixel Data values in the message object stored in memory  rather than using temporary files  This should improve performance  Also  in this  case you may want your callback class to supply the Pixel Data in fewer big  blocks  or one large block               Merge DICOM provides a number of implementations to the MCdataSource  interface  The MCfileDataSource class implements a data source that reads  from a file  A file name is supplied to the constructor  and the class will  automatically supply the contents of this file  The MCstreamDataSource class  implements a data source that reads from a System  IO  Stream derived  instance  For example  an instance of the System IO FileStream class can be  used to read the file  Finally  the MCmemoryDataSink class also implements  the MCdataSource interface  This class als
159. e that is  not one of the enumerated values  A warning is also issued if an attribute  that has defined terms has a value that is not one of those defined terms     That a non private attribute is not included in the message that is not defined  for that DICOM message  service command pair      As mentioned  Merge DICOM Toolkit does not capture all standard violations   and the DICOM Standard itself should be considered the final word when  validating a message  Important limitations of Merge DICOM validation include     DICOM Part 3 specifies Information Object Definitions  IOD s  as being  composed of modules  Each module contains attributes  Only in the case of  composite IOD s may an attribute be specified in DICOM Part 3 as being  contained in either a User Optional or Conditional Module  Merge DICOM  Toolkit treats all such attributes as being value type 3  optional      Also  certain modules may be mutually exclusive  e g   curve and overlay  modules   in the case of some composite IOD s  e g   Ultrasound Image  Object  used in storage services     For normalized services using the N EVENT REPORT command  the actual  contents of an N EVENT REPORT message are dependent on the Event  Type ID being communicated  Merge DICOM Toolkit treats all Event Type  ID s identically when performing message validation  namely it treats all  attributes as type 3     An example of the use of the validate method follows  The example assumes a  MCdimseMessage  msg  was just received and t
160. e time for a given  address port combination  without first calling stopListening  see below   It is  possible though to start listeners on the same address and port for different  application objects  in this case the toolkit will attach the existing listener to the  second application     Merge DICOM starts a separate thread for each listener     In addition to the previous parametes  you must specify an  MCproposedContextList object that describes the services your Application Entity  is willing to support     class MyAssocHandler   MCacceptor    void start  MCassociation assoc  1            MyAssocHandler myHandler   new MyAssocHandler       MCapplication myAE   MCapplication getApplication    ACME Query SCP             M RGE    Healthcare    Merge DICOM Toolkit      STOP     stopListening    MCresultContext  NumberOfAcceptable   Contexts  FirstAcceptableContext  NextAcceptableContext  MCassociation   accept   reject   MCresultContext    NET C     User   s Manua    MCproposedContextList myContext    MCproposedContextList getObject    service list name      int port     the port that is being listened on    To use the port number configured in mergecom pro or the default port 104        port   MCassociation startListening  myAE  myContext   myHandler      To listen on a specific port  e g   1114         port   MCassociation startListening myAE  1114  myContext   myHandler      To listen on a specific network interface and port number        IPEndPoint ep   new IPEndPoint  
161. e to an even multiple of the MSS  1460 bytes   will help increase performance on most platforms     TCPIP SEND BUFFER SIZE     This option sets the TCP IP send buffer  size  Higher values for this buffer generally will increase the network  performance of the toolkit for client  SCU  applications  This value should  also be slightly larger than the PDU MAXIMUM LENGTH to increase  performance  Setting this value to an even multiple of the MSS  1460 bytes   will help increase performance on most platforms    M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C     5     User   s Manual    Which of the options listed above have the greatest impact on network  performance     The TCPIP_RECEIVE_BUFFER_SIZE and TCPIP_SEND_BUFFER_SIZE  configuration options have the greatest impact on network performance   Setting these properly directly increases the network performance of Merge  DICOM Toolkit            sending 8 bit images with Merge DICOM Toolkit  however  after sending  the data to another system  the pixel data is byte swapped incorrectly  What  is causing this problem     The Merge DICOM Toolkit Users Manual contains the section    8 bit Pixel  Data     page 99  which describes this problem  This is typically only a  problem on Big Endian machines  To summarize the problem  on big endian  machines  we expect 8 bit data to be byte swapped  We do not look at the     bits allocated    and    bits stored    tags to determine that the pixel data itself is  
162. eMessage  read   readFile  readFileBypassLargeData   readFileUpToTag  writeFile and  writeFileByCallback methods     Setting this option to values larger than  28K will in most cases cause the  toolkit to use the operating system s  memory management scheme instead  of the toolkit s internal mechanism     DEFAULT  28K    This parameter specifies the base  name to use for capture files    Capture files are generated if the  NETWORK CAPTURE value is set to  Yes   If only one capture file is  requested  see  NUMBER OF CAP FILES   the  capture file will have the name  specified  If more than one is  requested  nnn will be appended to the  base file name specified  e g    merge001 cap     DEFAULT  merge cap  in the current  directory        M RGE    Healthcare    Section Description    CAPTURE_FILE_SIZE TRANSPORT_PARMS   This parameter specifies the maximum  size  in kilobytes  that capture files are  allowed to grow   Capture files are  generated if the  NETWORK_CAPTURE value is set to  Yes   If more than one capture file is  requested  see  NUMBER_OF_CAP_FILES   each file  generated will have this maximum  size  If    value less than 1 is specified  only one capture file of unlimited  length will be generated     DEFAULT  0    MAX PENDING CONNECTIONS TRANSPORT PARMS   This parameter specifies the maximum  number of open listen channels  It s  value is used as the second argument  of a TCP listen   call     DEFAULT  5    NETWORK CAPTURE TRANSPORT PARMS   This parameter specifies 
163. ecause it allows a network  administrator to plan or coordinate a network of DICOM applications  For an  application to claim DICOM conformance  it must have an accurate conformance  statement     Parts 3 and 4 define the types of services and information that can be exchanged  using DICOM     Parts 5 and 6 describe how commands and data shall be encoded so that  decoding devices can interpret them     Part 7 describes the structure of the DICOM commands  that along with related  data  make up a DICOM message  This part also describes the association  negotiation process  whereby two DICOM applications mutually agree upon the  services they will perform over the network     Part 8 describes how the DICOM messages are exchanged over the network  using two prominent transport layer protocols  TCP IP and OSI   Note that IPv4  and IPv6 are supported by DICOM and by Merge DICOM Toolkit    This is  termed the DICOM Upper Layer Protocol  DICOM UL      Part 9 is rarely of interest  as it describes how DICOM messages shall be  exchanged using the    old    50 pin point to point connection originally specified in  the predecessor to DICOM  ACR NEMA Version 2   This part has been retired  from the DICOM standard     Part 10 describes the DICOM model for the storage of medical imaging  information on removable media  It specifies the contents of a DICOM File Set   the format of a DICOM File and the policies associated with the maintenance of a  DICOM Media Storage Directory  DICOMDIR  st
164. ed in your DICOM  conformance statement      The Implementation Version Number   as specified in your DICOM  conformance statement      This value defined the UID of the  Deflated explicit VR little endian  transfer syntax     DEFAULT  1 2 840 10008 1 2 1 99       M RGE    Healthcare    IMPLICIT_BIG_ENDIAN_SYNTAX    IMPLICIT_LITTLE_ENDIAN_SYNTAX    LICENSE    RLE_SYNTAX    JPEG_BASELINE_SYNTAX    JPEG EXTENDED 2 4 SYNTAX    JPEG EXTENDED 3 5 SYNTAX    JPEG SPEC NON HIER 6 8 SYNTAX    JPEG SPEC NON HIER 7 9 SYNTAX    M RGE    Healthcare    Section    ASSOC_PARMS  ASSOC_PARMS    ASSOC_PARMS  ASSOC_PARMS    Description    The implicit big endian transfer syntax  is not defined by the DICOM standard   This value is provided to supply  compatibility with private  implementations     DEFAULT   lt none gt     The implicit little endian transfer syntax  is the default network transfer syntax  of the DICOM standard  The implicit  little endian transfer syntax must  always be defined     DEFAULT  1 2 840 10008 1 2    The Merge DICOM Toolkit license  number that was supplied when the  toolkit was purchased     This value defines the UID of the RLE  transfer syntax     DEFAULT  1 2 840 10008 1 2 5    This value defines the UID for JPEG  Baseline  Process 1  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 50    This value defines the UID for JPEG  Extended  Process 2  amp  4  transfer  syntax     DEFAULT  1 2 840 10008 1 2 4 51    This value defines the UID for JPEG  Extended  Process 3 
165. ed of several hundreds of pages over sixteen  separate parts  Each part of the standard focuses on a different aspect of the  DICOM protocol     Part 1  Introduction and Overview   Part 2  Conformance   Part 3  Information Object Definitions   Part 4  Service Class Specifications   Part 5  Data Structures and Encoding   Part 6  Data Dictionary   Part 7  Message Exchange   Part 8  Network Communication Support for Message Exchange   Part 9  Point to Point Communication Support for Message Exchange  retired     Part 10  Common Media Storage Functions for Data Interchange         NEMA Standards Publication No  PS 3 5 1993  DICOM Part 5   Data Structures and Encoding      4     M RGE 1    Fiealthcare    Merge DICOM Toolkit      A quick walk  through DICOM    N    NET C  User s Manual    Part 11  Media Storage Application Profiles   Part 12  Media Formats and Physical Media for Data Interchange   Part 13  Print Management Point to Point Communication Support  retired   Part 14  Grayscale Standard Display Function   Part 15  Security Profiles   Part 16  DICOM Content Mapping Resource   Part 17  Explanatory Information    Part 18  Web Access to DICOM Persistent Objects  WADO     Part 1 of the standard gives an overview of the standard  Since this part was  approved before most of the other parts were completed  it is already somewhat  outdated and can be confusing     Part 2 describes DICOM conformance and how to write a conformance  statement  A conformance statement is important b
166. ell as lower level  directory records  DICOM File ID   s are encoded in the directory record if the  record references a particular DICOM file in the file set     DICOMDIR s are ugly  The key observation here is that rather than using nested Sequences of Items to  encode the DICOMDIR hierarchy  the standard chose to use a single  potentially  very large  sequence of items and byte offsets  The standard defines these byte  offsets as being measured  from the first byte of the file meta information   As  you might well imagine  the complexity of maintaining these byte offsets  accurately  as directory records are added to or removed from directory entities  within the DICOMDIR file  is very great and can be very cumbersome     But we pretty them up Fortunately  the Merge DICOM Toolkit supplies methods that make DICOMDIR  maintenance much simpler for your application  These methods are now  described     134 M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    MCdir extends the MCfile  class    MCdir    Directory record properties    MCdirRecord    M RGE    Fiealthcare    Constructing a new MCdir Instance    To create a special type of DICOM file that contains a DICOMDIR directory   construct a new MCdir object  The MCdir class is a subclass of the MCfile class  since it is simply a form of a DICOM file  The file name provided MUST refer to a  file named  DICOMDIR      MCdir myDICOMDIR   MCdir   HERE DICOMDIR                   When you construct an MCdir ob
167. em classes and  encapsulates common functionality for all of them     Each Content Item type is implemented as a separate class with the specific data  exposed as public properties  All Content Item classes are implementing the  MCserializableToDataSet interface that is used by the Toolkit to read and write  individual Content Items     The Merge DICOM Toolkit allows you to extend existing Content Item classes by  providing your own derived classes from existing types  For example  if you want  to store the Content Item data in your own format or save extra DICOM attributes  that are not covered by the Toolkit classes  Once you created your own extended  class  you need to register it with the class factory that is responsible for creating  classes during reading data from DICOM datasets  By default  Toolkit will create  a known class per each Content Item Type according to Table 21  The class  factory is implemented in the MCstructuredReport class and can be updated  by calling the following function        public void UpdateItemFactory ContentItemType itemType   Type classType     Note  The class factory registration is not global and the registration shall be  done per instance of the MCstructuredReport class     Encoding SR Documents  The creation of the SR document involves following steps     1  Creating a new MCstructuredReport object    2  Adding Content Items  nodes  to the tree based on the templates definition   3  Creating a new dataset    4  Saving SR Content to 
168. enerates a   reasonable  sample message that is written to a binary file  The contents of this  file are generated in DICOM file format or in exactly the format as the message  would be streamed over the network     The program fills in default values for all the required attributes within the  message  You can also use this utility to generate its own configuration file   which you can then modify to specify your own values for attributes in generated  messages     These generated messages are purely meant as  useful  examples that can be  used to test message exchange or give the application developer a feel for the    structure of DICOM messages  They are not intended to represent real world  medical data     The messages generated can be validated or listed with the mc3list and mc3valid  utilities  The command syntax for mc3file is the following        mc3file   serv     cmd     num     g   file      c   file      1     m    q    t  lt syntax gt     f  lt file gt        serv    lt cmd gt  These two options are always used together     They specify the service name and command  for the message to be generated  Thes  names can be either upper or lower case    If the exact names for a service command  pair are not known  the  1 option can be  used instead to specify the service nam  and command  If the service name and  command are improperly specified  mc3file  will act as if the  l option was used and  ask the user to input the correct servic  name and command      num   T
169. entions   Terms that are being defined are presented in boldface     Margin notes  in the left margin  are used to highlight important points or sections  of the document     When the descriptive text applies to one of the  NET classes provided by the  DICOM Toolkit Library  the appropriate class name is listed in the left margin  using Lucida Sans font     Portions of the document that can relate directly to the performance of your  application are marked with the special margin note Performance Tuning     Sample commands appear in bold courier font  while sample output  source  code  and method calls appear in standard courier font     Hexadecimal numbers are written with a trailing H  For example 16 decimal is  equivalent to 10H hexadecimal     Merge DICOM Toolkit      MCapplication    Client Server    MCdimseService   and it   s subclasses     MCfileService   and it   s subclasses     MCsopClass    10    NET C  User   s Manual       Understanding DICOM    The many separate parts of the DICOM Standard can seem overwhelming  and  most would agree that they are difficult to read  Part of wnat makes a successful  standard is precision and detail  Our goal here is to explain the key concepts  without delving too far into the detail  most of which is handled automatically for  you by the DICOM Toolkit     General Concepts    Some key concepts that must be understood to use the DICOM Toolkit wisely  are common across both DICOM networking and interchangeable media  applications 
170. er is ignored if the  dictionary is pre compiled and loaded  as part of the program  using the  gendict utility     NOTE  Embedded systems must  always use pre compiled dictionary  entries     DEFAULT  MEM       201    DICTIONARY_FILE    DUPLICATE_ENCAPSULATED_ICON    ELIMINATE ITEM REFERENCES      EMPTY PRIVATE CREATOR CODES    EXPORT PRIVATE ATTRIBUTES TO      NETWORK                 UN  VR TO NETWORK    202    Section    MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS  MESSAGE_PARMS  MESSAGE_PARMS    Description    This parameter specifies the name   path  of the DICOM dictionary  An  absolute or relative path may be  specified     NOTE  This parameter is ignored if the  dictionary has been pre compiled     DEFAULT     mc3msg mrgcom3 dct    When duplicating to an encapsulated  transfer syntax  this configuration  value specifies whether an ICON  IMAGE SEQUENCE should also be  encapsulated     This parameter specifies the behavior  of the  removeMessageValues  MCdimseMes  sage  cleanup  MCdataSet   cleanup  MCfile  cleanup  MCitem   removeFileValues  MCfile  and  removeAllValues  McatrtibuteSet  methods  If this parameter is set to  YES  the above methods will search  for references in every currently open  attribute set to delete when they  encounter an item to free within an  attribute set     DEFAULT  YES     If set to NO  private creator codes  contained in attribute sets are not  emptied when the removeFileValues  or removeMessageValues method  calls a
171. er syntaxes supported by a  server  SCP  are defined through a service list contained in the Merge DICOM  Application Profile  When support within a server  SCP  is limited to the three  non encapsulated DICOM transfer syntaxes  the toolkit will transparently handle  the use of multiple presentation contexts for a DICOM service  However  when  encapsulated DICOM transfer syntaxes are used  the server  SCP  must be able  to determine the transfer syntax of messages it receives so that it can properly  parse the pixel data contained in them  When a single presentation context is  negotiated for a DICOM service  the FirstAcceptableContext and  NextAcceptableContext MCassociation properties can be used to  determine the transfer syntax for a service     When more than one presentation context is negotiated for a service  the  TransferSyntax property of the MCdimseMessage class must be used to set  or get this transfer syntax  The following is a typical call to this method     MCdimseMessage dm     A DICOM message just received  MCtransferSyntax ts   dm TransferSyntax     Exchange of messages over the network is discussed further below     Transfer Syntax Lists for The presentation contexts supported for client  SCU  applications using Merge  SCUs DICOM are also defined through the Merge DICOM Application Profile  The  following is a typical client s  SCU  configuration      Acme Store SCP   PORT  NUMBER  HOST  NAME   SERVICE LIST       104  acme suni  Storage Service List        
172. eral Audio Waveform Storage   General ECG Waveform Storage   Hemodynamic Waveform Storage   Ophthalmic 8 bit Photography Image  Storage   Ophthalmic 16 bit Photography  Image Storage   Ophthalmic Tomography Image  Storage   Spectacle Prescription Report  Storage   Stereometric Relationship Storage   Real World Value Mapping Storage    MCstorageCommitment     Semi Storage Storage Commitment Push Ensures that SOP  ervice    Commitment Storage Commitment Pull Instances stored with the  storage service class will  not be deleted after  reception but will be  stored safely and can be  retrieved again at a later  point        M RGE 13    Healthcare    Merge DICOM Toolkit      MCmediaStorageService    MCqueryRetrieveService    MCbasicWorklist   ManagementService    MCprintManagement   Service    McstudyContent   NotificationService    NET C     Service Class    Media Storage    Query Retrieve    Basic Worklist  Management    Print Management    Study Content  Notification    Services    DICOM Basic Directory Storage and  storage of various  italicized   services from the other Service  Classes    Patient Root Find  Patient Root Move  Patient Root Get   Study Root Find   Study Root Move   Study Root Get  Patient Study Only Find  Patient Study Only Move  Patient Study Only Get    Modality Worklist Find    Basic Film Session   Basic Film Box   Basic Grayscale Image Box   Basic Color Image Box   Printer   Printer Configuration   Print Queue Management   Pull Print Request   Printer Refe
173. es a method to allow the user to manage image data  through the use of registered callback methods  The MCapplication class  registerAttributeContainer method associates a callback class with a  DICOM attribute such as pixel data  These callbacks are limited to attributes with  the value representations of OB  OW  or OF  When encountered  the attribute s  data is passed to a method of the registered callback class instead of being  stored within Merge DICOM Toolkit  The callback is also used to supply the  attribute s data  The size of data elements to use in callbacks can also be  specified  The CALLBACK MIN DATA  SIZE configuration option can specify the  minimum size or length required for the use of a registered callback class        There are three models in which registerAttributeContainer can       used  First  it can be used to seamlessly replace Merge DICOM Toolkit s  memory management functions  Use of this method can for the most part be  hidden from the application  Secondly  the method can be used as an interface  to receive or supply data only when it is needed  When writing a network  application  the image data can be supplied to the user directly as it is read off  the network  The data can also be supplied when it is about to be written to the  network  This functionality can also be used when creating and reading DICOM  files  Finally  registerAttributeContainer can be used to save an image  to disk as it is received over the network     138 M RGE    Health
174. es i Properties is Properties       ContentltemType    Code OF ContentitemType OF ContentitemType     Text      ContentitemType CF Qualifier      SopReference   ti Methods 2i Methods OF Units    Methods         Values   amp  Methods             MCimageltem  Class  9 MCcompositeitem    MCtemporalCoordPositionsIt   2   Class    MCtemporalCoordinatesitem    MCtemporalCoordTimeOftset     gt  MCtemporalCoordDateTimelt      Chess           MOtenperalCcordinatesItem   MCtemoarsiCoardnsstes tem       ti Fields it  Fields Fields    Fields                  zi Properties    Properties   Properties Properties   gt  ContentltemType  gt  ContentltemType SF ContentitemType  gt  ContentitemType       ReferencedSamplePositions      ReferencedTimeOffsets 7 ReferencedOateTime    ReferencedFrames       ReferencedRealworkivm     ReferencedSegments     ReferencedSps    W Methods      Mathods Methods   Methods    Figure 21  SR Class Diagram    MCcompositettem 2  Chass          User s Manual         MCwaveformItem   lt           MCcompositelten         Channels       ContentitemType    8 Methods    Nested Types       M RGE    153    Merge DICOM Toolkit      Extending Toolkit Classes    154    NET C  User s Manual    In Figure 21  there are two top level classes     e MCstructuredReport     This class is encapsulating the Structured Report  Content Module and has utility functions for reading and writing content tree  from DICOM datasets     e MCcontentltem     This is a base class for all content it
175. es the number of times that a Content Item of the specified  pattern  or an included Template may appear in this position  Table 24 specifies  the values that are permitted in this field     Table 24  Permitted Values for VM    Expression Definition    i  where    i represents   Exactly i occurrences  where    gt  1  e g   when i21 there shall be  an integer  one occurrence of the Content Item in this position     iH From i to j occurrences  where i          are  gt  1 and j gt i     Requirement Type    The Requirement Type field specifies the requirements on the presence or  absence of the Content Item or included Template  The following symbols are  used        e        Mandatory  Shall be present     e          Mandatory Conditional  Shall be present if the specified condition is  satisfied     e U    User Option  May or may not be present     e UC     User Option Conditional  May not be present  May be present  according to the specified condition     Condition    The Condition field specifies any conditions upon which presence or absence of  the Content Item or its values depends  This field specifies any Concept  Name s  or Values upon which there are dependencies     References may also be made to row numbers  e g   to specify exclusive OR  conditions that span multiple rows of a Template table      Merge DICOM Toolkit                User s Manual    The following abbreviations are used     e XOR     Exclusive OR One and only one row shall be selected from mutually   e
176. escribed in data     as appropriate    if  errorOccured   throw new MCcallbackCannotComplyException                  MCdimseMessage msg     non null referenc  MyStreamHandler streamHandler   new MyStreamHandler     try      msg streamOut  0x00080000  Ox7FDFFFFF   MCtransferSyntax ExplicitLittleEndian   streamHandler       catch  MCnoAttributesException           catch  MCillegalArgumentException     1     catch  MCcallbackCannotComplyException                               This call converts the attributes from  0008 0000  through  7FDF FFFF  in the  MCdimseMessage object identified by msg into a DICOM message stream using  the explicit VR little endian transfer syntax  The message stream will be encoded  using the explicit VR little endian transfer syntax        112 M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    streamHandler is an instance of MyStreamHandler  a class that implements  the MCdataSink interface  The MCdataSink interface requires a receiveData  method that receives and manages the stream data a block at a time  See the  API description in the Assembly Windows Help File for further details     Retrieving message data Once your application has done the above and stored the stream somewhere     from a message stream you could later rebuild a message object containing only group 0008 using   MCstreamInCallback class MyStreamHandler   MCdataSource    MCdata    provideData method public MCdata provideData bool isFirst  Object origin       
177. et to YES  the remote system need  not specify a correct DICOM  application title when requesting an  association  If set to NO a correct  application title must be used  When  this value is set to YES  the toolkit will  report the remote application as  connecting to the first application  registered    DEFAULT  NO   ACCEPT ANY CONTEXT           ASSOC PARMS If set to YES  the remote system need  not specify the  LOCAL APPL CONTEXT NAME  when requesting an association  If set  to NO  the correct context name must  be used    DEFAULT  NO    ACCEPT ANY HOSTNAME ASSOC PARMS If set to YES  the toolkit will not check  if applications connecting to an SCP  can have their hostname resolved  through the SCP s host file or domain  name server  If set to NO  the toolkit  will automatically reject associations  from unknown hosts    DEFAULT  NO    ACCEPT ANY PRESENTATION CONTEXT     ASSOC PARMS If set to YES  the tool kit will not  validate that the presentation context  ID contained in a message s PDU  header information matches the ID of  the presentation context negotiated for  the type of message contained in the  PDU  If set to NO  the toolkit will abort  associations when these values do not  match   DEFAULT  NO   ACCEPT  DIFFERENT            ASSOC PARMS If set to NO  the remote system must  specify the local  IMPLEMENTATION CLASS UID  when requesting an association  If set  to YES  a different implementation  class UID may be used   DEFAULT  YES       M RGE 189    Healthcare    A
178. example  the Patient Root Find   C FIND RQ service command pair  has a specific message structure  The command portion of a message is  specified in Part 7 of the standard  while the object instance portion is specified in  Parts 3 and 4     The DICOM data dictionary defines many data elements  An attribute is a data  element with a value  A message is constructed of attributes  with each attribute  identified by a tag  An attribute is a unit of data  e g   Patient s Name  Scheduled  Discharge Date        A tag is a 4 byte number identifying an attribute    e g   00100010H for Patient s Name  0038001CH for Scheduled Discharge  Date           A tag is usually written as an ordered pair of two byte numbers  The first two  bytes are sometimes called a group number  with the last two bytes being called  an element number  e g    0010  0010    0038  001C         This terminology is  partly a remnant of the ACR NEMA Standard where elements within a group  were related in some manner  This can no longer be depended on in DICOM   but the ordered pair notation is still useful and often easier to read     Also  the ordered pair notation is important when defining a Tag for a private  attribute  We will see later that all private attributes must have an odd group  number     Each attribute identified by a Tag       Command Object Instance    a   Command Attribute LI   Object Instance Attribute    Figure 6  A DICOM Message    DICOM Data Dictionary    Attributes have certain characteristi
179. f Content Items is denoted by     gt     symbols  one per level of  nesting below the initial Source Content Item  of the Template  in a manner  similar to the depiction of nested Sequences of Items in Modules Tables in Part 3  of the DICOM  When it is necessary to specify the Target Content Item s  of a  relationship  they are specified in the row s  immediately following the  corresponding Source Content Item  The Merge DICOM Toolkit provides  functions to add nested  child  Content Items to the parent Content Item node   The following function shall be used to add a child node with relationship     public void AddChild MCcontentItem childItem   MCrelationshipType relationshipType     Relationship with Source Content Item  Parent   Relationship Type and Mode are specified for each row that specifies a target  content item  The Relationship Types are enumerated in the Table 22     Relationship Type and Mode may also be specified when another Template is  included  either    top down    or    bottom up    or both  i e   in the  INCLUDE  Template  row of the calling Template  or in all rows of the included Template  or    149    Merge DICOM Toolkit                User s Manual    in both places   There shall be no conflict between the Relationship Type and  Mode of a row that includes another Template and the Relationship Type and  Mode of the rows of the included Template     When the relationship is defined in a form as R RTYPE  it means that  Relationship Mode is    By refe
180. fSoplnfo  o McCrefStudyInfo  DICOM Network Service classes   MCdimseService  o MCbasicWorklistManagementService  o MCpatientManagementService  o MoOprintManagementService  o MCqueryRetrieveService  o MCqueueManagementService  o MCresultsManagementService  o MCstorageService  o MCstorageCommitmentService              D        2        2          MCstudyContentNotificationService  MCstudyManagementService  MCverificationService  ICOM media services and objects  Files        MCabstractMessage    MCfile     DICOMDIR   MCdir     DICOMDIR record   MCdirRecord  o DICOM files service   MCmediaStorageService  Exception handling     Mcexception  MCruntimeException and their  sub classes  Compression related  o Compression Interface         MCcompression    RLE Compressor    MCrleCompressor  RLE Decompressor    MCrleDecompressor  JPEG and JPEG2000 Compressor    MCstandardCompressor  JPEG and JPEG2000 Decompressor     MCstandardDecompressor         fe         fe         fe         M RGE    Healthcare    Merge DICOM Toolkit      Visibility    Constant values for  DICOM tags    Errors Happen    Exception Numbers    M RGE    Fiealthcare    NET C  User   s Manual    This section of the User   s Manual attempts to present the highlights of the Merge  DICOM Toolkit Assembly in a logical manner as it might be used in real DICOM  applications  The classes are presented in the context of example C  source  code snippets  and alternative approaches are presented that tradeoff certain  features for
181. ference  All forms of the  add method return the MCattribute added to the set  If the attribute already  exists in the set  this attribute is returned     MCattributeSet myAttrSet     non null referenc  MCtag tag   new MCtag 0x0008  0x0010    MCattribute myAttr           All of the following accomplish the same thing  myAttr   myAttrSet add tag    myAttr   myAttrSet add 0x00080010      If you are attempting to add a private attribute and there are already 240 private  blocks in the attribute s private group  an MCinvalidEncodingException will  be thrown  If the MCtag parameter does not identify an element in the data  dictionary or the MCdataElement parameter is not defined in the data dictionary   an MCnotStandardElementException Willbe thrown     Using the MCattributeSet indexer to access MCattribute  instances    The MCattributeSet contains a number of indexers for access attributes and  values within an attribute set  Two forms of the indexer are specifically for  getting and setting MCattribute instances within the MCattributSet  These forms  require a uint or MCtag instance to indentify the attribute  The following are the  two forms of the indexer setting and getting MCattribute instances     public MCattribute this uint tag   public MCattribute this MCtag tag     The following example shows how the indexers can be used to set and get  MCattribute instances from the attribute set     MCtag tag   new MCtag 0x00080010    MCattribute attrib   new MCattribute  tag    MCatt
182. for the error  numbers that may be returned     The ToString method in the MCvalidationError class provides a convenient way  to display a validation error  A sample string  that includes imbedded line feeds   follows        Attribute tag  0x00100010  Patient s Name   Dataset  Mergecom MCdataSet   Value Number  0   Description  Invalid value for this tag s VR  Error Number  28    It is on the initial call to the validate method that all the validation takes place  and that the results of the validation for the entire message are logged to the  message log file  Subsequent calls to the getNextValidationError method  simply steps through the results of the validation  passing additional errors found  back to the application  A sample log file report follows        0 3 52 09 00 7919 MC3 T5   0008 0005  VI  Unable to check condition   0 3 52 09 00 7919 MC3 T5   0008 0023  VI  Unable to check condition   0 3 52 09 00 7919 MC3 T5   00008 0033  VI  Unable to check condition   0 3 52 09 00 7919 MC3 T5   0010 1010  VE   41Y   Invalid value for this tag s VR  0 3 52 09 00 7919 MC3 T5   0018 0010  VW  Invalid attribute for service   0 3 52 09 00 7919 MC3 T5   0018 0015  VE  Required attribute has no value  0 3 52 09 00 7919 MC3 T5   0018 0020  VW  Invalid attribute for service   0 3 52 09 00 7919 MC3 T5   0018 0021  VW  Invalid attribute for service   0 3 52 09 00 7919 MC3 T5   0018 0022  VW  Invalid attribute for service   0 3 52 09 00 7919 MC3 T5   0018 0023  VW  Invalid attribute for
183. formation object portion of a DICOMDIR file has a special structure that is  described in Part 3  PS 3 3  of the DICOM Standard  We described the this  structure earlier in this document  see Figure 8 on page 29  as a hierarchy of  directory records  where each directory record may contain a set of related  directory records  These directory records can have a one to one relationship to  a DICOM file within the file set described by the DICOMDIR  Directory records  do not have to reference a DICOM file  they can be used solely to contain  information that helps an application navigate down the directory hierarchy to  locate the desired DICOM file     As an example  the Root directory record might contain two Patient directory  records and a Topic directory record  One of the Patient directory records  references multiple Series records and a Film Session record for that Patient   Each of these Series records reference Image records for that patient  It is these  Image records that reference the DICOM file containing the image objects  acquired for the Patient whose directory hierarchy we have traversed   See  above on page 29 for a description of the allowed entity hierarchies      This directory record hierarchy is encoded within the DICOMDIR as a single   potentially very complex  sequence of items where each item is a directory  record  Byte offset attributes within the directory records are used to point to  other directory records at the same level in the hierarchy  as w
184. g form of the  MCassociation requestAssociation method  providing the Remote  Application Title of the server you wish to connect to through the use of the  MCremoteApplication class        MCapplication myAE    MCapplication getApplication     ACME_Query_SCU       MCremoteApplication remoteApp    MCremoteApplication getObject   ACME Query  SCP     MCassociation myAssoc   myAssoc   MCassociation requestAssociation  myAE  remoteApp                    The getObject static method of MCremoteApplication allows you to load  configuration information about the remote application from the Application  profile  Itis also possible to use the constructor from MCremoteApplication to  supply all of the connection information for the remote application  See the  Merge DICOM  NET Windows Help File description of MCremoteApplication for  the format of these constructors     If you want a separate thread to process the association  you must first provide a  class that will process the new association  The class must implement the  MCrequester interface  That interface requires that your class have a start  method that will be passed a newly created MCassociation object  When  Merge DICOM has successfully started an association  it will use a separate  thread to call your class   s start method  Everything you need to know about  the association is provided in the MCassociation object  When your start method  returns  Merge DICOM will end the thread     In this case  you must not only supply 
185. g tag  int index  Object defaultValue      Each of these methods return an Object representing the value  The tag to  retrieve can be specified as an MCtag instance or a uint containing the tag  The  index parameter allows the user to specify the specific value to get  if the  attribute has a value of multiplicity greater than one  The index is zero based   Two final forms are added as a convenience and allow a default value to be  specified if the attribute does not have a value or it is missing in the attribute set     Each method returns an Object representing the value  the type of object  returned is determined by value representation of the attribute that is being  retrieved  The methods return nu11 if the attribute s value was a DICOM NULL  value  i e  its value length was zero   Table 12 below shows the data types that  are returned for each DICOM Value Representation     Table 12  Valid value type parameters for the various Value Representations    Data Types Value Representations  Returned    MCdate  MCdateTime  MCtime    MCage    String AE  DS  IS  Ul  CS  LO  LT  SH  ST  UT    MCpersonName  float    double       M RGE    Healthcare    Merge DICOM Toolkit      Have Merge DICOM  Toolkit give a callback the  value    MCdataSink  receiveData method    M RGE    Healthcare    NET C     User   s Manual    Data Types  Returned    Value Representations    SL  short 55  ushort U    MCdataSink    OB  OF  OW  UNKNOWN_VR     MCitem       If a value is retrieved which is not se
186. g the MCfile object    You can use the removeFileValues method to remove the values of each  attribute in the file   s data set and meta info set  This is equivalent to calling the  MCattributeSet removeValues method for each attribute in the file   s contained  MCdataSet and MCfileMetalnfo objects  This method is useful for applications  that reuse an MCfile object and want to insure there are no attribute values  remaining from the last use of the object  Attributes with no values are skipped  when streaming the collection for network transfer or for writing a DICOM file     myFile removeFileValues          M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Data Set Validation    validate  validateAttribute    How big is the file stream     streamLength    The transfer syntax UID    TransferSyntax property    The file s name    FileName property    M RGE    Healthcare    File validation    You can validate that the data set meets the requirements of the  service command pair associated with the file by using the validate method of  the MCfile object   You could also use the validate method of the contained  MCdataSet object   You can also validate an individual attribute within the data  set using the validateAttribute method        MCfile myFile     non null referenc    bool validates    validates   myFile validateAttribute  MCdicom PATIENTS_NAME   MCvalidateLevel Errors Only     if   validates                               MCvalidationError err   m
187. geService    You must interface with the  selected media device    130    NET C  User s Manual    Listing the file   s attributes    The 1ist method produces a report describing the contents of the File Meta Info  and Dataset contained in this MCfile  The report will be written to the stream  identified by the stream object provided  If no stream object is specified the report  will be written to the system s standard output  stdout      If the object contains an attribute with a Value Representation of SQ  sequence  of items   each item in the sequence will be listed  Each sequence of items is  indented in the listing four spaces to the right of its owning message or items        System IO StreamWriter writer   new StreamWriter   myFile     myFile list writer       list to myFile       myFile list       list to stdout    Using the MCmediaStorageService Class    Analogous to the MCdimseService class that handles DICOM network message  exchange  the MCmediaStorageService class handles services dealing with  DICOM media files  The MCmediaStorageService provides methods to read and  write DICOM files     All the media interchange functionality of the DICOM Toolkit relies on methods  that you supply to interface with the particular physical medium and file system  format on your target device  This approach was chosen because of the wide  variety of media and file system configurations allowed by the DICOM Standard  and the potentially unlimited combination of media devices  devi
188. gt   lt suffix gt     where  lt root gt  is assigned by a registration authority  e g   ANSI  with the  distinguishing component being the organization ID  The  lt root gt  portion of the  UID uniquely identifies an organization while the  lt suffix gt  portion is used to  uniquely identify a specific object within the scope of the organization  While the    root   component of the UID stays constant  the   su    ix   portion will change  in a manner that will provide uniqueness for objects that need UIDs     Note  This implies that the organization is responsible for maintaining the  uniqueness of the   suffix       For example  using the UID above    root     1 2 840 10008 and    suffix     2 45 1 12345  Where the organization ID portion of the  lt root gt    10008  distinguishes organizations from each other     Note  The above example is typical for UIDs obtained by ANSI during the time  when the DICOM standard was first released  The organization ID of  10008 has actually been assigned to NEMA and is used as part of the    root   for DICOM standard UIDs such as SOP Classes  Transfer  Syntaxes  etc  For example  vendors creating images need to obtain  their own organization ID and cannot use 10008     For future UIDs  ISO has developed a joint relationship with CCITT and has  changed the   root   structure  Therefore  new UIDs from ANSI will no longer be  of the form 1 2 840 xxxxx  but are currently assigned using the form    root      2 16 840 1 10008  Where  of course  
189. h  25  gt     lt  Attribute gt     Attribute Tag  00020003  VR  UI  Name  Media Storage  SOP Instance UID  Length  29  gt     lt  Attribute gt    lt Attribute Tag  00020010  VR  UI  Name  Transfer Syntax  UID  Length  19  gt 1 2 840 10008 1 2 1 lt  Attribute gt                                             lt Attribute Tag  00020016  VR  AE   Application Entity Title    Length  15  gt MERGE_STORE_SCP lt  Attribute gt      FileMetaInfo      DataSet Service  STANDARD SEC CAPTURE    Command  C STORE        TransferSyntax  1 2 840 10008 1 2 1        Attribute Tag  00080008  VR  CS  Name  Image Type   Length  24  gt ORIGINAL  SECONDARY  OTHER lt  Attribute gt    lt Attribute Tag  00080016  VR  UI  Name  SOP Class UID   Length  25  gt 1 2 840 10008 5 1 4 1 1 7 lt  Attribute gt        ame  Source                                               lt Attribute Tag  00080020  VR  DA  Name  Study Date   Length  8  gt 20020717 lt  Attribute gt    lt Attribute Tag  00080030  VR  TM  Name  Study Time   Length  6  gt 123429 lt  Attribute gt    lt Attribute Tag  00080060  VR  CS  Name  Modality   Length  2  gt 0T lt  Attribute gt                               Attribute Tag  00081111  VR  SQ  Name  Referenced  Performed Procedure Step Sequence  Length  1  gt     Item       Attribute Tag  00081150  VR  UI  Name  Referenced  SOP Class UID   Length  23  gt 1 2 840 10008 3 1 2 3 3 lt  Attribute gt    lt Attribute Tag  00081155  VR  UI  Name  Referenced  SOP Instance UID   Length  44  gt 2 16 840 1 1136
190. hat  content  The heading  describes the content of  the CONTAINER  Content Item and may  map to a document  section heading in a  printed or displayed  document        Table 22 describes the Relationship Types between Source Content Items and  the Target Content Items  The choice of which may be constrained by the IOD in  which this Module is contained  The Merge DICOM Toolkit Definition column  specifies the enumerated value used in the Toolkit to identify the Content Item    Relationship     145    Merge DICOM Toolkit    NET C  User   s Manual    Table 22  SR Relationship Types    Relationship Type Merge DICOM Description  Toolkit Definition    CONTAINS CONTAINS Source Item contains Target Content  Item  e g   CONTAINER  History    CONTAINS  TEXT     mother had  breast cancer     CONTAINS IMAGE  36     HAS OBS HAS OBS                Has Observation Context  Target   CONTEXT    Content Items shall convey any  specialization of Observation Context  needed for unambiguous  documentation of the Source Content  Item     e g   CONTAINER   Report   HAS  OBS CONTEXT  PNAME   Recording  Observer       Smith John  Dr       HAS CONCEPT HAS_CONCEPT_MO   Has Concept Modifier  Used to qualify   MOD D or describe the Concept Name of the  Source Content item  such as to create  a post coordinated description of a  concept  or to further describe a  concept     e g   CODE  Chest X Ray   HAS  CONCEPT MOD  CODE  View   PA  and Lateral      e g   CODE  Breast   HAS  CONCEPT MOD  TEXT  French 
191. he UN VR into OB  Systems that can handle the UN VR will now  also receive these attributes as OB     Set the EXPORT_UN_VR_TO_NETWORK configuration option to    No     This will  cause the Merge DICOM toolkit to not export attributes encoded as UN VR to the  network     For SCP systems receiving UN VR tags when they cannot handle them  the  following can be done     Configure the SCP to only negotiate the Implicit VR Little Endian transfer syntax  when receiving objects     With the help of these options  most UN VR problems in the field can be fixed  simply by changing configuration values with the Merge DICOM toolkit     M RGE    Healthcare    Merge DICOM Toolkit           Performance Tuning    M RGE    Fiealthcare    NET C     User   s Manual       Appendix A  Frequently Asked Questions    This appendix lists some frequently asked questions by toolkit users     f     It is inconvenient to set absolute paths for the various configuration options in  the merge ini and mergecom pro files that need them  Is there a way to  make these pathnames be configurable at run time     Merge DICOM allows the placement of environment variables in these  pathnames  This allows setting of a root directory for these pathnames  The  following is an example of how this functionality is used in our configuration  files           MERGECOM PRO   5  MERGE_ROOT   mc3apps mergecom pro                      In this example  MERGE_ROOT would be an environment variable              A special macro  MC3I
192. he intent is to validate the  message        MCdimseMessage msg      non null referenc    bool validates   validates   msg validate  MCvalidationLevel Errors Only    if   validates                      MCvalidationError err   msg getNextValidationError       107    Merge DICOM Toolkit      MCvalidationLevel  enum    MCvalidationError  firstError  nextError    Example Output    Example Log File    NET C  User   s Manual    while  err    null      System Console Out WriteLine err ToString      rr   msg getNextValidationError                  In this example  the application validates the MCdimseMessage object msg at  the MCvalidationLevel Errors  Only level   MCvalidationLevel Errors  And Warnings could be used to report both  warnings and errors  while MCvalidationLevel Full could be used to report  errors  warnings  and informational messages  If MCdimseMessage validate  returns false  your application can use the getNextValidationError method  to retrieve MCvalidationError objects that describe the error  Each  MCvalidationError instance has these public properties                    e Tag     A uint identifying the DICOM tag in error    e AttributeSet     the MCattributeSet derived class containing the attribute  in error       ValueNumber     specifies which of the attribute s values was in error  e ErrorDescription     a String describing the error    e ErrorNumber     a number identifying the error  Refer to the  MCvalidationError class in the Assembly Windows Help File 
193. he mcInitialization call was made  After the Library is successfully  released it can be re initialized in either the same application domain or a new  one     Getting the Assembly Version    You can use the static mcGetVersionString method of the MC class to retrieve  the string identifying the Merge DICOM Library version  The library version  number string is of the form  n m v  where n is major version number  m is minor  version number and v is an interim release number     Releasing Native Memory    The Merge DICOM  NET Classes call a number of routines in the C Merge  DICOM toolkit that allocate memory  The  NET classes have been written so  native resources associated with a  NET class are automatically freed when the   NET CLR garbage collector cleans up the managed memory in the class  Note   however  that a number of classes implement the dispose method that an  application can use if it wants greater control over when native memory is freed   Note that after this method is called for a specific instance  that instance can no  longer be utilized by your application     Here is a list of the classes that can be disposed explicitly   e  MCapplication   e  MCassociation   e MCdataSet   e MCdimseMessage  contains a MCdataSet reference   e MCfile  contains a MCdataSet reference    e              e MCproposedContextList   e MCproposedContext   e MCtransferSyntaxList    e MCdata    57    Merge DICOM Toolkit                User s Manual    Using the Merge DICOM log file    
194. her  means only by very experienced or specialized users     Additional information about the service profile can be found in System Profile   Appendix D  Configuration Parameters     Message Logging   Merge DICOM Toolkit supplies a message logging facility whereby three primary  classes of messages can be logged to a specified file and or standard output    e Errors    e Warnings    e Status    Error messages include unrecoverable errors  such as  association aborted   or   failure to connect to remote application   Other error messages may be  catastrophic but it is left to the application to determine whether or not to abort an  association  such as an  invalid attribute value  or  missing attribute value  in a  DICOM message     Warnings are meant to alert toolkit users to unusual conditions  such as missing  parameters that are defaulted or attributes having values that are not one of the  defined terms in the standard     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Status messages give high level messages describing the opening of  associations and exchanging of messages over open associations     As discussed earlier  other more detailed logging can be obtained by using the  T1 MESSAGE through T9_MESSAGE logging levels  For example  the   T5 MESSAGE logging level can be used to log the results of validate   or  validateAttribute   methods of the MCdimseMessage class                             An excerpt from a Merge DICOM Toolkit message
195. hin them  are also freed  The  deleteChildren deletes all children for the current directory record  The delete  method deletes the current record and all of the children of the directory record     The Merge DICOM Toolkit updates and maintains all the byte offsets that are  part of the DICOMDIR structure automatically  But  one important note  All the  changes to a DICOMDIR are made in memory and are not committed to media  until a writeFile callis made     Memory Management    The Merge DICOM C library contains it s own memory management routines  that are optimized for how it uses memory  They have been adapted to manage  specific data structures that are frequently allocated by the Merge DICOM C  toolkit  These include but are not limited to data structures for associations   messages  and tags  The memory management routines have the characteristic  that they do not actually  free  the memory that has been acquired  Instead  they  mark the data as being free and place the memory in a list for reuse later  These  routines have been optimized to quickly acquire and free memory being used by  Merge DICOM Toolkit  They also allow Merge DICOM to not depend on the  memory management of a particular operating system     These memory routines have also been extended for use with variable sized  memory buffers  Merge DICOM uses these routines to allocate buffers in sizes  between 4 bytes and 28K  When an allocation is requested  Merge DICOM will  take the smallest buffer that wil
196. hip to each child  or target  Content Item  and is  conveyed by the Relationship Type  Figure 19 illustrates the relationship of SR  Documents to Content Items and the relationships of Content Items to other    Content Items  as well as to the Observation Context        142    M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    SR Document    1      ema  gt     1       Content Item               Note  A Content Item may    contain either Observation  Context or other content     related to    0                   Figure 19  SR Information Model  Each Content Item contains the following        Aname value pair  consisting of     o asingle Concept Name Code that is the name of a name value pair or a  heading  and    o avalue  text  numeric  code  etc       e References to images  waveforms or other composite objects  with or without  coordinates  and    e Relationships to other Items  either by value through nested Content  Sequences  or by reference     Note  Some Content Item Types can have multiple values     Content Item Types   Table 21 defines all possible Content Item Types that can be used in the SR  Document Content Module  The choice of which may be constrained by the IOD  in which this Module is contained  The Merge DICOM Toolkit Class column  specifies the enumerated value used in the Toolkit to identify the Content Item  Type     M RGE 143    Healthcare    Me    144    rge DICOM Toolkit      NET C     Table 21  SR Content ltem Types    Item Ty
197. his option specifies the number of messag  files to be generated by mc3file  If the    g option is used  this option is not needed  on the command line  If the  c option is  used  mc3file assumes the number is 1   although a higher number can be specified  on the command line  mc3file will vary any  fields that have a value representation of  time when multiple files are generated   although when the  c option is used  the  utility will use the time fields as  specified in the configuration file  Thus  multiple message files generated with the    c option are identical    g   filename   This option causes mc3file to generate an  ASCII configuration file  The file  contains a listing of all the valid  attributes for the specified message  Th  utility also adds sequences contained in   the message along with their attributes    Each attribute in the file contains the   tag  value representation  and the default   value MC3File uses for the attribute  If a   given attribute has more than one value                                               M RGE    Healthcare    49    Merge DICOM Toolkit                  c  lt filename gt     t  lt syntax gt         lt file gt     User s Manual    the character  M  is used to delimit the  values  A default value listed as  NULL   means the attribute is set to NULL  If the  filename specified already exists  it will  be written over my MC3File  The  configuration file can be modified and  reloaded into MC3File with the  c option to  generate a
198. ia write snippet    M RGE    Healthcare    NET C     User   s Manua    Creating and Writing Files    When you have a populated MCfile object you can create a DICOM file stream  by using the writeFile method of the MCmediaStorageService class  This  method utilizes the MCdataSink class to present the file stream for writing to  media     If your application has one or more MCattributeContainer objects registered for  OB OW OF attributes  the writeFile method retrieve an attribute   s value from  a callback if an MCattributeContainer callback is registered for it     The second parameter of writeFile specifies a byte padding number  The  attribute  FFFC  FFFC  will be added to the MCfile object and given a length  such that the total length of the streamed file is a multiple of the byte padding  number  If 0 is specified  there will be no padding of the file stream          parameter must be an even number     If the file contains    group length    attributes  i e  attributes with tags of the form  99990000  any group  element zero   this method will automatically calculate the  group length value when supply it to the callback     The byte stream will be formatted in the transfer syntax specified by the attribute  transfer syntax UID  specified by the MCdicom  TRANSFER SYNTAX UID   0002 001 0  attribute in the file s Meta Information set    You can set this value  using the TransferSyntax property of the MCfile class      Two group 2 attributes within the file meta informatio
199. ibed later does that     Construct an MCfile object with a pre populated data set    Two forms of the constructor create an MCfile object that contains all of the  attributes of a DICOM file that will be used for the given service and command   The attributes are maintained in a MCfileMetalnfo object and an MCdataSet  object  Normally you will only deal with the data set and the file meta information  attributes will be set automatically by Merge DICOM Toolkit     MCfile myFile   new MCfile command  serviceName    MyFileName      or    MCfile myFile   new MCfile  command  serviceName       serviceName and command are used to access configuration information that  describes the attributes of the message  If such configuration information is not  available  an empty file object is created  and a warning message is logged  The  filename parameter  if used  provides the name of the operating system file to be  associated with this MCfile object    Construct an MCfile object with an empty data set    Two forms of the constructor are used if the service and command are not yet  known  or if there is no need to validate that values will be set only for attributes  assigned to a given service command pair  It creates an empty MCdataSet  object  The resulting MCfile object is not associated with any particular DICOM  service or command  If the validate method is to be called  the  setServiceCommand method must be called first to associate this file object  with a given DICOM service a
200. ically published every year  Each version includes  approved changes since the last publishing  The most recent version of the  standard is available in PDF format and can be downloaded from NEMA   s public    ftp site at  ftp   medical nema org medical Dicom 201 1    Please note that the DICOM Standard is evolving so rapidly  that additions to the  Standard are published as    supplements     For example  the media extensions  have been incorporated into the DICOM Standard as a supplement that contains  addenda to various parts of the standard  e g   PS3 3  PS3 4        If you find that  this document references a part of the Standard and you cannot find what you  are looking for in that part  you probably need to get the proper supplement from  NEMA  Other additions to the Standard  e g   new image objects or documents   will also be published as supplements  NEMA also makes all supplements to the  standard freely available on their ftp server  You can reference these    supplements at  ftp   medical nema org medical Dicom Final     M RGE    Healthcare    Merge DICOM Toolkit    _NET C  User s Manual    The Merge DICOM Toolkit    Merge DICOM Toolkit provides a generalized implementation of DICOM in a   NET Assembly that you can use with your application  This  NET version of  Merge DICOM makes use of the run time library of the Merge DICOM C C    Toolkit  As such  it benefits from the power of that library while providing a  complete  NET Assembly interface  You use methods 
201. identified differently than are standard attributes  Its tag is  composed of an odd group number  a private identification code string  and a  single byte element number     For example  ACME Imaging Inc  might define a private attribute to hold the  name of the field engineer that last serviced their equipment  They could assign  this attribute to private attribute tag  1455   ACME IMG            00   This attribute  has group number 1455  a private identification code string of  ACME IMG             and a single byte element number of 00     Merge DICOM Toolkit                User s Manual    ACME could assign up 255 other private attributes to private group 1455 by  using the other element numbers  01 FF   Part 5 of DICOM explains how these  private tags are translated to standard group and element numbers and encoded  into a message  while avoiding collisions  Merge DICOM Toolkit handles these  details for you     DICOM makes a couple of rules that must be followed when using private  attributes     e Private attributes shall not be used in place of required  Value Type 1  1C  2   or 2C  attributes     e The possible value representations  VR s  used for private attributes shall be  only those specified by the standard  see Table 3      The way you use private attributes in your application can also greatly affect your  conformance statement  DICOM conformance is discussed in greater detail  later     Media Interchange    MCmediaStorageService The DICOM Standard specifies
202. iealthcare    Merge DICOM Toolkit                User s Manual    At any time either association partner may abort the association  This is used  only in abnormal situations     assoc abort       After calling release or abort  no other methods should be called for the  association object     When the network partner releases or aborts the association  the other  application is notified by an exception thrown by the read method     MCdimseMessage dm    try    long timeout   30000     30 second timeout  dm   assoc read timeout    if  dm    null       Timeout       The MCdimseMessage just sent is returned     catch  MCassociationReleasedStatus            catch  MCassociationAbortedException e         catch  MCexception                 Association Properties    The MCassociation class contains several properties that can be used to retrieve  information about the association     Application Context Name    The ApplicationContextName property contains the name of the application  context in use by the local and remote applications on this association  connection  It is in the form of a DICOM Unique Identifier     ApplicationContextName    An application context is an explicitly defined set of application service elements   related options  and any other information necessary for the interworking of  application entities over the association     Currently there is only one DICOM Application Context Name that is defined for  the DICOM standard   1 2 840 10008 3 1 1 1     Refer to A
203. ile class  A sub class of the  MCfile class  the MCdir class  encapsulates a special DICOM directory file   called the DICOMDIR  Just as DICOM network messages  the  MCdimseMessage class  contain a command set  MCcommandSet         a data  set  MCdataSet   so the MCfile class contains a special file meta information  attribute set  the MCfileMetalnfo class  and a data set  MCdataSet      Figure 16 demonstrates the attribute sets contained in DICOM network messages  and DICOM file objects     Network Message DICOM file object  MCdimseMessage MCfile    MCcommandSet MCfileMetalnfo    MCdataSet MCdataSet    MCattributeS et sub classes  MCattributeS et sub classes       Figure 16  Attribute Sets Contained in DICOM objects    Merge DICOM Toolkit                User s Manual    Several ways to construct  file objects    Populating the file  with a service s attributes    Constructing  an    empty    file object    laf    Performance Tuning    Constructing a new MCfile Instance    The Media Storage Service manipulates MCfile objects  There are several  options available to construct new instances of the MCfile class  As mentioned  before  each MCfile instance contains an MCdataSet object and an  MCfileMetalnfo object  The MCfile may be constructed with a pre populated data  set or with an empty data set     It is important to realize that constructing an MCfile object does not create the  physical DICOM file out on the media  the write method of the  MCmediaStorageService class descr
204. in the    mergecom pro    file refers to  the maximum number of outstanding connection requests per listener socket   The value of this configuration is passed by the toolkit to the listen   call on the  Socket as the backlog parameter and it specifies how many pending connections  can be queued at any given time           The MAX PENDING CONNECTIONS configuration option affects the accepting of  associations but not the requesting of associations and it affects the behavior at  the TCP level  In the default case  if more than five association requests arrive at  once then only the first five will be accepted by TCP and passed to Merge  DICOM Toolkit  the others would be refused at the TCP level           M RGE    Healthcare    Merge DICOM Toolkit      Dealing with large data  Performance Tuning    Callbacks  MCattributeContainer         Performance Tuning    Message info Files    M RGE    Healthcare    NET C  User   s Manual     TRANSPORT PARMS              TCPIP LISTEN PORT   104    Max number of open listen channels  MAX PENDING CONNECTIONS   5    An important section of the System Profile is the  MESSAGE PARMS section                  MESSAGE PARMS                                                                          EMP FILE DIRECTORY  users mc3adv tmp files   MSG INFO FILE  users mc3adv mrgcom3 msg                         STORE   FILE 4   MEM Default   FILE           DATA SIZE   200   OBOW BUFFER SIZE   4096   DICTIONARY FILE    users mc3adv mrgcom3 dct       The LAR
205. ined file meta info     Using the MCattribute class    New DICOM attributes can be defined by constructing a new MCattribute class  object  An MCdataElement object is used to construct the MCattribute        de   new MCdataElement  new MCtag 0x00080010     MCattribute myAttr   new MCattribute  de      The MCattribute class exists primarily to contain the properties of the DICOM  attributes they encapsulate  Properties of the MCattribute class allow you to  retrieve the following properties    e The number of values currently stored for the attribute  the Count property      e        tag that identifies the attribute  the Tag property      e The DICOM Value Representation for the attribute  the  ValueRepresentation property      87    Merge DICOM Toolkit      Adding attributes  to the set    Getting an MCattribute  from an attribute set    88    NET C  User s Manual    e The values of the attribute     e The keyword of the attribute     int count   myAttr Count    MCtag tag   myAttr Tag    MCvr vr   myAttr ValueRepresentation   String keyword   myAt getKeyword       Adding Attributes to an Attribute Set    Attributes may be added to an attribute set in two ways  The first method is by  using the add method of the MCattributeSet class  The second method is  through the use of an indexer  The use of the indexer is defined in the next  section     When using the aad method of MCattributeSet  the attribute to be added can be  identified by 1  an uint reference or 2  by an MCtag re
206. ing data when it has   readFileUpToTag processed the last attribute whose tag is  lt  the    last tag    parameter  It will  return the file offset to the first byte of the first attribute whose tag is  gt  the     last tag    parameter     This method can be used to increase performance for handling attributes of  Value Representations OB  OW  or OF  Itis most useful when a file contains  pixel data  7FEO  0010  as its last attribute and this pixel data is very large   In these instances you may wish to ignore the pixel data  read it in later   using the returned file offset   or process it directly from the file using your  own special filters or hardware  This can be done by specifying  MCdicom PIXEL_DATA for    last tag    parameter     Capplication myApp     non null reference    Cfile fileObj   new MCfile     FileName        CdataSource source   new  MCfileDataSource fileObj FileName            CmediaStorageService service   new  MCmediaStorageService  myApp         try    service readFileUpToTag  fileObj  MCdicom PIXEL DATA   Source      catch  Exception e  1                See the Assembly Windows Help File for a detailed description of the use of  these read methods     132 M RGE    Healthcare    Merge DICOM Toolkit      writeFile    DICOM allows you  to pad the file    Merge DICOM Toolkit  assures accurate group  lengths    You control the endian  used in the file stream    Merge DICOM Toolkit  automatically   sets fields in the   File Meta Information    Sample med
207. ion if needed  and the length of the image data attribute to the file   The image data is written to the file in subsequent calls to the user s registered  callback method     139    Merge DICOM Toolkit                User s Manual    When read is parsing a message being received  it will notify the user s  registered callback class when it has parsed the header information and  determines the image data s length  The registered callback s  receiveDataLength method will be called  providing the length of the  registered attribute s value  as well as a reference to the MCattributeSet being  populated  At this point  the user can stream the header file to disk using the  MCattributeSet streamout method  As the image data is received  it can be  added to the end of this file     Data can also be stored as DICOM files with this method  The message cannot  be converted into a file object at this point using the special form of the MCfile  constructor as would normally done  So  a separate MCfile object must be  constructed to add the DICOM Part 10 Meta Header information  This header  can be written out from within the callback by using the st reamOut method on  the contained MCfileMetalnfo object  After the end of the meta header  the  message can be streamed to disk with a call to st reamOut in the transfer syntax  specified in the Meta Header  As subsequent image data is passed to the user s  callback class  the data can be written to file  Because the endian of the transfer  s
208. ion model  e g   a Film Box   Composite objects are composed of  several related entities  e g   an MR Image   When possible  it is preferable to  deal with normalized object instances over the network  because they contain  less redundant data and can be more efficiently managed by an application     Most services inherited from the ACR NEMA Version 2 x Standard are  composite services  operate on composite object instances  for reasons of  backward compatibility  Newly introduced services  such as the HIS RIS and  Print Management Services  tend to be normalized services  operate on  normalized object instances         2 object instances are referred to as SOP Instances or managed SOP   s in the DICOM standard     15    Merge DICOM Toolkit      16    NET C  User   s Manual    Networking    Certain aspects of DICOM only apply to networking when using the DICOM  Toolkit  This includes networking commands and association negotiation     Commands    DICOM defines a set of networking commands   Each service uses a subset of  these DICOM commands to perform the service over a network  These  commands usually act on object instances  The C commands operate on  composite object instances  while the N commands operate on normalized object  instances     The DICOM commands and brief descriptions of their actions are listed in  Table 2     Table 2  DICOM Commands    DICOM Commands Description    C STORE Transfer an object instance to a remote AE     C GET Retrieve object instance s  f
209. is described further in the following section  The setValue  may also be used to set values for attributes of types SL  SS  UL  US  AT  FL  and FD     Using an MCdataSource class to assign an attribute value  When setting the value of an attribute with a value representation of OB or OW or    Supplying pixel data         OF  e g   Pixel Data   you can create    class that implements the MCdataSource  MCdata class interface and then call setValue MCdataSource  uint  method of MCattribute to  MCcallbackCannotCompl assign the attribute s value  Pixel Data can be very large and you can use this  yException method to supply the data value a  chunk  or block at a time    setValue The callback class you provide must provide a provideData method that is called    by the library to retrieve portions of the attribute s value  The library provides the  provideData method a bool that is true the first time the method is called to  retrieve attribute values  The library also provides a System Object reference to  the instance that is calling provideData  The provideData method is required to  return portions of the attribute s value  using an instance of the MCdata class     As an example  your application could define a MCdataSource class called  MyPDSupplyCallback whose purpose is to supply Pixel Data  Pseudo code  for this class follows     class MyPDSupplyCallback   MCdataSource    public String file   null   public MCdata provideData bool isFirst Object origin     if  isFirst        
210. is running on  your local machine   you do need to specify a service list that your application  supports as an SCP  If your application also acts as a storage server  for  example  it could use  Storage Service List   You also need to specify a  listen port for your server AE in the System Profile  which is discussed below     Transfer Syntax List For DICOM Toolkit users  Merge DICOM allows for the defining of the transfer  syntaxes supported for each service in a service list  This functionality is  implemented through the use of transfer syntax lists  The basic service lists  discussed above can be modified to include these transfer syntax lists  The  following is an example service list that has transfer syntaxes specified for each  service                                                Storage Service List    SERVICES SUPPORTED   3 4 Number of Services  SERVICE 1   STANDARD MR   SYNTAX LIST 1   MR Syntax List   SERVICE 2   STANDARD US   SYNTAX LIST 2   US Syntax List   SERVICE 3   STANDARD CT   SYNTAX LIST 3   CT Syntax List                    MR Syntax List                                               SYNTAXES SUPPORTED   4 4 Number of Syntaxes  SYNTAX 1   JPEG BASELINE   SYNTAX 2     EXPLICIT BIG ENDIAN  SYNTAX 3   EXPLICIT LITTLE ENDIAN  SYNTAX 4   IMPLICIT LITTLE ENDIAN                                US  Syntax List                 SYNTAXES SUPPORTED   2 4 Number of Syntaxes  SYNTAX 1   RLE  SYNTAX 2   IMPLICIT LITTLE ENDIAN                        Syntax List       
211. ity will read an input file and then write the  output file in the transfer syntax specified in the command line  The utility can  also convert between DICOM  stream  format and the DICOM file format  The  syntax for the mc3conv utility is the following     mc3conv input file output file   t  lt syntax gt     m    tag    tag      new value        input file DICOM SOP Instance  message  fil  output file Output DICOM SOP Instance  message  fil                   t Specify transfer syntax for    output_file      where   syntax      il  for implicit little  endian  default      el    for explicit little  endian     eb    for explicit big endian   m Specify format of  output file  to be DICOM  3 media  Part 10  format    tag Change value for this tag in    output_file      where   tag     the tag that is to be changed  in hex Ox      new value     the value for the  tag in quotes      h Show these options    Example   mc3conv in img out dcm  t el  m       46    M RGE    Healthcare    Merge DICOM Toolkit               User   s Manual    Do a DICOM    ping       Display Message Contents    mc3echo    The mc3echo utility validates application level communication between two  DICOM AE s  An echo test is the equivalent of a network  ping  operation  but at  the DICOM application level rather than the TCP IP transport level     All server  SCP  applications built with the DICOM Toolkit also have built in  support of the Verification Service Class and the C ECHO command     The command sy
212. ject  Merge DICOM creates an instance of the  MCfile class that has a service name of  DICOMDIR  and uses    STORE       for the command  see Table 5      The MCdirRecord class    The MCdirRecord class represents a DICOMDIR record and is simply a  container for a number of public properties and methods     e Parent     A property that returns the MCdirRecord instance for the parent  record of this directory record     e  RecordName     This property gets a String name assigned to the requested  DICOMDIR record       Directory     This property returns the MCdir that this directory record is  contained within     e IsLast     a Boolean that is true if the record is the last child record of the  parent record  This property is not updated when new child records are  added or removed to from the parent record     e  RecordItem     This property is the MCitem instance for the directory  record        getChildCount       This method returns a count of the number of child  records     e getFirstChild      This method returns the MCdirRecord for the first  child of this directory record        getNextChild      This method can be called repeatedly to get  subsequent child directory records        getReferencedRecordCount        This method traverses all child  directory records and returns a count of these records        addChildRecord String newItemName      This method adds a child  record     e delete       This method deletes the current directory record within the  DICOMDIR    
213. jects for services  known to the Toolkit  You must either identify the service by its name  or you  must identify it by its DICOM Unique Identifier  UID   Valid service names and  UIDs are configured in the Service Profile  mergecom srv  file     MCsopClass myServicel    MCsopClass getSopClassByName   STANDARD CT      MCsopClass myService2   MCsopClass getSopClassByUid    1 2 840 10008 5 1 4 1 1 1       For each service you want to include in your MCproposedContextList you must  specify what roles your application is prepared to play for the service  Your  application may indicate whether it is willing to perform the Service Class  User SCU  role and or Service Class Provider SCP  role  It may support either  role or both roles  If these parameters are not specified the default role of the  association requester is SCU only and the default role of the association  acceptor is SCP only     Now  you are ready to create an array of MCproposedContext objects that will be  used in your new MCproposedContextL ist     MCproposedContext   myCtxArray   new MCproposedContext  2            myCtxArray 0    new MCproposedContext  myServicel  myTSL    bool scuRole   true  scpRole   true   myCtxArray 1    new MCproposedContext  myService2  myTSL        scuRole  scpRole      Finally  you create your own MCproposedContextList     MCproposedContextList myContextList   new  MCproposedContextList     MYLIST1     myCtxArray      MCproposedContext properties    The MCproposedContext class provides
214. king With Attribute                                                             80  Constructing Message                               80  Construct a message using a pre populated data                                          80  Construct a message with an empty data                                                       81  Construct a message using an existing data 5                                               81  Convert an MCfile                                     82  MCdimseMessage                                    82  Transfer Syntax Used issie                                          82  Contained attribute                               82  The service and command used by the                                                        82  MCdimseMessage Command Set Properties                                                82  Constructing File                                      84  Construct with a pre populated data                                                               84  Construct with an empty data                                                      85  Convert an MCdimseMessage object to an MCfile object                             85  Setting data set                        44  0                 85  Specifying the file                             86  Constructing Item Objects                             86  Get Set item                    240404       0         tnnt nen nensis inten 86  Constructing MCdataSet Objects                                    
215. l fit the bytes requested  These buffers will be  kept in Merge DICOM Toolkit s internal memory pool and never freed  For  allocations larger than 28K  Merge DICOM will simply use the  C  functions  malloc   and free       The end result of these routines is that applications using Merge DICOM expand  to the maximum amount of memory used at one time  The total memory  allocation will not shrink from this point  In applications that repeatedly perform a  consistent operation  the memory being used by Merge DICOM should stabilize  and not increase in size  As a result of these routines  the first time an  application performs a DICOM operation is typically slower than subsequent  operations     When developing a DICOM application with Merge DICOM Toolkit  the most  memory intensive operation is dealing with image data  The following sections  discuss various Merge DICOM methods  A description is given of how these  methods manage memory in conjunction with various Merge DICOM  configuration settings     Assigning Pixel Data    The MCattribute setValue methodis used in conjunction with the  MCdataSource interface to assign OB  OW  or OF data to a DICOM attribute   These value representations are used to store image data or other large data  elements  set Value is described in further detail elsewhere in this manual        The MCdataSource implementation can pass data to the library in a single  call  or in several smaller chunks  When passed data  the library Will       MERGE   
216. le under the  following keys        IMPLEMENTATION CLASS UID                         IMPLEMENTATION VERSION       This UID must follow the syntax rules specified in Part 5 of the DICOM standard     Proposed or Accepted Presentation Contexts    Application conformance statements specify all presentation contexts that are  used for association negotiation  A presentation context consists of     e an Abstract Syntax which is a DICOM service class name and unique  identifier UID      e atransfer syntax name and UID  A transfer syntax represents a set of data  encoding rules that are specified in the    mergecom pro       file  Please see the   System Profile  section in Appendix B  Configuration Parameters     e       role that the application will perform within the service class  The roles  associated with a particular service class are discussed in Part 4 of the  DICOM standard     170 M RGE    Healthcare    Merge DICOM Toolkit               User s Manual    e any extended negotiation information used when creating associations  See  the    MC_Get_Negotiation_Info    function in the Merge DICOM Reference  Manual  and  and    e        rules that govern the acceptance of presentation contexts for the AE   This includes rules for which combinations of Abstract Transfer Syntaxes are  acceptable  and rules for prioritization of presentation contexts  Rules that  govern selection of transfer syntax within a presentation context are stated  here  Please see the    Application Profile
217. library uses the serviceName parameter to reference the proper message  info file along with the data dictionary and builds a MCdataSet object containing  all of the attributes that may be used for that the service class     The command parameter is used to inform Merge DICOM what values must be  placed in the MCcommandSet it constructs for you     Exceptions will be thrown if either of the parameters in invalid     Construct a message with an empty data set     A second form of the constructor is used if the service and command are not  yet known  or if there is no need to validate the values that will be set  It creates  an empty MCdataSet object as well as the MCcommandSet object  The  MCdimseMessage object is not associated with any particular DICOM service or  command  If the object is to be used to send a message to a network partner  or  if the validate method is to be called  the setServiceCommand method must be  called first to associate this message object with a given DICOM service and  command     MCdimseMessage dm     dm   new MCdimseMessage       Construct a message using an existing data set     A third form of the constructor creates a new MCdimseMessage object that  references an existing MCdataSet object for its data set  and constructs a new  MCcommandSet object  If the data set has not yet been assigned a service and  command  the setServiceCommand method should be used to do so before  using this object to send a message to a network partner  or if the va
218. library using the  registerAttributeContainer method of the MCapplication class  The  library considers this interface a  container  for a specific attribute s value and  calls methods of the class to get or set the attribute s value  Such container  classes are registered only for attribute s that have values of great length  such  as pixel data     The methods of the MCattributeContainer class exhibit one significant difference  from the methods used in the MCdataSink and MCdataSource interfaces  described earlier  MCattributeContainer classes    throttle    the data flow as the  message object is communicated over the network  Rather than storing  attributes with large OB OW OF values within the message object itself  your  application is responsible for maintaining the value of these attributes     We will also see that MCattributeContainer objects affect accessing media files   See the discussion of this in the DICOM Files section later in this manual     Using an Attribute Container in a Server Application    A server  SCP  application can register a MCattributeContainer object that will be  called repetitively as the attribute s value arrives on an association during a  MCassociation read call  By the time the read method returns to the  application  the attribute value will already have been handled by your  MCattributeContainer class  The MCattributeContainer class could be used by  the server to treat this large block of OB OW OF data  usually pixel data   specially
219. lidate  method is to be called     MCdimseMessage dm   MCdataSet ds     A non null referenc       dm   new MCdimseMessage  ds          common programming technique is to construct an empty MCdataSet object  and use it when setting attribute values  see below      MCdimseMessage dm   MCdataSet ds   new MCdataSet       empty data set    dm   new MCdimseMessage  ds      In this case  the message info and data dictionary files are not accessed when  the MCdataSet object is constructed  The MCdataSet object contains no  attributes and the setServiceCommand method must be called to set the  service and command for this data set before it can be used in a message sent  over the network  Since this approach avoids accessing the message info files  it  is more efficient  However  this approach also penalizes you in terms of runtime  error checking  This is discussed further later     81    Merge DICOM Toolkit                User s Manual    Constructing a message  to use with the  MCdimseService derived  classes    TransferSyntax    Command  ServiceName  setServiceCommand    ActionTypeld    AffectedSopClassUid    AffectedSopInstanceUid    Convert an MCfile object    A fourth form of the constructor creates a new MCdimseMessage object that  shares the same MCdataSet object as that contained      a specified   i      object     MCdimseMessage dm   MCfile file     A non null referenc       dm   new MCdimseMessage file      If you will be using one of the sub classes of the MCdimseService
220. list of  the currently supported transfer syntaxes        Table 32  Transfer Syntax List Parameters    Merge DICOM Transfer Syntax Parameter Description    Syntax for DICOM    JPEG_BASELINE JPEG Baseline  Process 1   Default  Transfer Syntax for Lossy JPEG 8 Bit  Image Compression    JPEG_EXTENDED 2 4 JPEG Extended  Process 2  amp  4   Default  Transfer Syntax for Lossy JPEG 12 Bit    Image Compression  Process 4 only     JPEG EXTENDED 3 5 JPEG Extended  Process 3  amp  5    JPEG SPEC NON HIER 6 8 JPEG Spectral Selection  Non   Hierarchical  Process 6  amp  8    JPEG SPEC NON HIER 7 9 JPEG Spectral Selection  Non   Hierarchical  Process 7  amp  9    JPEG FULL PROG NON HIER 10 12 JPEG Full Progression  Non Hierarchical   Process 10  amp  12             FULL PROG NON HIER 11 13 JPEG Full Progression  Non Hierarchical   Process 11  amp  13    JPEG LOSSLESS NON HIER 14 JPEG Lossless  Non Hierarchical   Process 14    JPEG LOSSLESS NON HIER 15 JPEG Lossless  Non Hierarchical   Process 15     M RGE    Healthcare       Merge DICOM Transfer Syntax Parameter Description    JPEG EXTENDED HIER 16 18 JPEG Extended  Hierarchical  Process 16   amp  18     JPEG EXTENDED HIER 17 19 JPEG Extended  Hierarchical  Process 17   amp  19     JPEG SPEC HIER 20 22 JPEG Spectral Selection  Hierarchical   Process 20  amp  22     JPEG SPEC HIER 21 23 JPEG Spectral Selection  Hierarchical   Process 21  amp  23     JPEG FULL PROG HIER 24 26 JPEG Full Progression  Hierarchical   Process 24  amp  26     JPEG
221. lity required to facilitate  data flow between SCUs and SCPs     Application conformance statements include a data flow diagram  An example is  shown below for a simple Storage Service Class SCP     Local Remote    Write received STORE Remote Storage  4    MERGE STORE SCP 4 Service Class user       images to disk       Association Acc  ptance    DICOM Standard Interface    Figure C 1  MERGE STORE SCP application data flow diagram    168 M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Fiealthcare    NET C  User   s Manual    Functional Definition of Application Entities  AE     This section contains a functional definition for each individual  local Application  Entity  It describes in general terms  the functions that are performed by the AE   and the DICOM services used to accomplish these functions  In this sense    DICOM services  refers not only to DICOM Service Classes  but also to lower  level DICOM services  such as Association Services     Application conformance statements are described in this section with a general  specification of functions to be performed by SCU or SCP     Sequencing of Real World Activities    If applicable  this section will contain a description of sequencing as well as  potential constraints on real world activities  These include any applicable user  interaction as performed by all the AEs  A UML sequence diagram that depicts  the real world activities as vertical bars  and shows events exchanged between  them as arrows  is strongl
222. lled multiple times to traverse through the acceptable contexts  A null will be  returned by the property when the end of the list has been reached  The  FirstAcceptableContext method can be called to reset the list and traverse  through it again  Several other methods are available in MCassociation class to  inquire about the proposed association   Please refer to the MCassociation and  MCresultContext classes in the Windows Help File      Note that many applications don t have a need to call the  FirstAcceptableContext Or NextAcceptableContext methods since it is  acceptable that any of the services it negotiated were agreeable to both sides              M RGE    Healthcare    67    Merge DICOM Toolkit                   The acceptor decides    Accept or Reject    Requestor reacts    User s Manual    If this application agrees with the acceptable services  it calls the accept  method of MCassociation to establish an association between the two  applications  If it disagrees  for some reason  it calls the reject method     class MyAssocHandler   MCacceptor    void start  MCassociation assoc       try     MCresultContext ac   assoc FirstAcceptableContext   while  ac    null         Insert your check here   ac   assoc NextAcceptableContext            if   lt the services negotiated are acceptable gt    assoc accept       else  assoc reject        catch  MCassociationAbortedException e                     If you are rejecting the association  DICOM allows you to specify the reas
223. localAddress  1114     Mcassociation startListening  scpApp  ep  false  myContext   myHandler          If your application wants to stop listening for association requests on a given port   it must call the stopListening method of the MCassociation class  This  simply requests that the library no longer accept connection requests on the port  that are directed to this Application Entity  A server program may call this when it  is about to shut down  and then wait for any active threads to finish     MCapplication myAE    MCassociation getApplication  ACME Query SCP                MCassociation stopListening myAE  port      Accepting or Rejecting the Association    Before DICOM messages can be exchanged across the association  the  association acceptor must either accept or reject the association request from the  association requestor     When the Merge DICOM library calls the start method of your MCacceptor  class  it has already determined that both the local and remote applications wish  to perform at least one common service  The FirstAcceptableContext and  NextAcceptableContext properties of the MCassociation class may be used  to examine the services that are agreeable to both sides  The  NumberOfAcceptableContexts property retrieves the number of contexts  that is acceptable to both sides  Each of these calls returns an  MCresultContext object that can be interrogated to determine the properties of  each acceptable service  The NextAcceptableContext property can be  ca
224. lue  If this is the last portion of the value that the library will present  the  IsLast property of the MCdata object will be t rue     The data buffer in the MCdata object may have a length of zero if this is the last  portion of the data  i e  MCdata IsLast   true      Note that this method is not called when processing the MCmediaStorageService  readFileBypassLargeData call because the OB OW OF data is left on the  media  Instead  the library calls the receiveMediaDataLength method  see  below         If the method cannot comply with the request  it must throw an  MCcallbackCannotComplyException  If the exception is thrown  Merge  DICOM will make no further calls for this instance of the attribute     public void receiveData MCattributeSet attribSet  MCtag  tag  MCdata data  bool isFirst      if  anyProblemOccurs   throw new MCcallbackCannotComplyException     if  isFirst        Perhaps open an output data sink          Save the data    if  data IsLast        perhaps close the data sink    Merge DICOM Toolkit                User s Manual    Merge DICOM Toolkit  calls to provide the  attribute s data length  and data offset    How to register an  MCattributeContainer object    registerAttributeContainer    Writing the receiveMediaDataLength method    The receiveMediaDataLength method is called by the library when it is  reading a file from media while it is processing an MCmediaStorageService  readFileBypassLargeData call  This method provides the total size of the  attrib
225. ly a decode method and a toByteArray  method  The Library calls the decode method when it receives a buffer of  extended negotiation information and it calls the toByteArray method to request  that negotiation information be placed in a byte array for transmission     Merge DICOM provides two sub classes to the MCnegotiationInfo class  the  MCstorageNegotiation class and the MCqueryRetrieveNegotiation class    Refer to the Merge DICOM  NET    Assembly Windows Help File for details      If you will be using extended negotiation  you will use the setNegotiationInfo  method of the MCproposedContextList class to  register  your MCnegotiationInfo  object  For example     MCnegotiationInfo  myInfo   MyContextList setNegotiationInfo myInfo       Note that if you use the MCstorageService or MCqueryRetrieveService classes   this negotiation processing is handled for you automatically     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Association startup  for a client application  MCrequester    Processing the association  in the same thread    Processing the association  in the another thread    MCassociation    Starting an Association Requester    If your application will be an association requester  the MCapplication class  provides several options you can use to request an association with a network  partner     First  you must decide how you will process the new association  If your current  thread will process the association  you will use the followin
226. m is reduced   Setting this value to YES will also  improve the performance of the  DICOMDIR directory methods  This  configuration value does not have any  effect on embedded platforms     DEFAULT  NO       203    IGNORE_JPEG_BAD_SUFFIX    LARGE_DATA_SIZE    LARGE_DATA_STORE    MSG_INFO_FILE    NULL_TYPE3_VALIDATION    OBOW_BUFFER_SIZE    204    Section    MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS  MESSAGE_PARMS    MESSAGE_PARMS    Description    Config Parameter for  MC_Standard_Decompressor to deal  with lossless JPEG images whose  suffix have been invalidly written  according to the JPEG specification   These images have a 16 zero bit suffix  following a  32768 prefix where the  JPEG spec says the suffix is omitted  following a  32768 prefix  The  following are the valid settings      1   Default  fail on these images    0   Ignore when user detects such  images    1   Let the toolkit detect and ignore  automatically    Defines  Large Data  to the toolkit    Large Data  is defined as an attribute  value which has a length of   LARGE DATA SIZE or more     DEFAULT  200     This parameter specifies where  Large  Data  values should be stored  FILE  means store the values in temporary  files  MEM means store the values in  memory  NOTE  Embedded systems  should ignore this parameter and  always use MEM     DEFAULT  MEM    This parameter specifies the name   path  of the DICOM message  information file  An absolute or relative  path may be specified     
227. mage Type    Length  24  gt ORIGINAL  SECONDARY  OTHER lt  Attribute gt    lt Attribute Tag  00080016  VR  UI  Name  SOP Class UID   Length  25  gt 1 2 840 10008 5 1 4 1 1 7 lt  Attribute gt     Attribute Tag  00081111  VR  SQ  Name  Referenced   Performed Procedure Step Sequence  Length  1  gt     Item      Attribute Tag  00081150  VR  UI  Name  Referenced  SOP Class UID   Length  23  gt 1 2 840 10008 3 1 2 3 3 lt  Attribute gt    lt Attribute Tag  00081155  VR  UI  Name  Referenced  SOP Instance UID   Length  44  gt 2 16 840 1 113669 4 960070 844 1026926027   44 lt  Attribute gt    lt  Item gt    lt  Attribute gt    lt Attribute Tag  00090010  VR  LO  Name  Private Creator  Code  PCode  PrivateCode  Length  11  gt SAMPLE  PCODE lt  Attribute gt    lt Attribute Tag  00091010  VR  LO  Name  Private   PCode  SAMPLE PCODE  Length  6  gt Valuel lt  Attribute gt    lt Attribute Tag  00091015  VR  UN  Name  Private   PCode  SAMPLE PCODE  Length  6  gt 20 20 20 20 20  30y lt  Attribute gt     Attribute Tag  7FE00010  VR  OW  Name  Pixel Data   Encoding  Base64  Length  262144  gt 06 00 04 00 04 00  02 00 03       lt  Attribute gt    lt  DataSet gt      DcmFile                                                                                                               212 M RGE    Healthcare    
228. means that the toolkit  cannot validate your message against the DICOM standard  but this may not  always be necessary once an application becomes stable  These options are  discussed in detail in the Developing DICOM Applications section of this  document     Sample Applications    Included with the toolkit are sample C  applications and Visual Studio 2005  project files that compile the sample applications  Sample client and server  applications are supplied for several DICOM services     Merge DICOM Message Database Manual and Tools    Merge OEM has a DICOM Database Management System in which the DICOM  standard is maintained  This database  along with a few additional tools  is used  to generate the binary message info and dictionary files accessed by the DICOM  Toolkit  As the DICOM standard is updated or extended  by simply maintaining  this database  we can generate new binary files and keep the toolkit current   This also reduces the number of changes that must be made in the core DICOM  Toolkit library over time     A number of tools are included with Merge DICOM  NET C  Toolkit for  maintaining the data dictionary  A Message Database Manual is distributed with  Merge DICOM and describes the use of these tools  This manual describes the  use of the various tools and text files supplied with Merge DICOM Toolkit  Users  can add definitions for private services and private attributes  Please reference  this manual for further information on extending the Merge DICOM dat
229. mp  4   JPEG Lossless Non Hierarchical Process 14  JPEG 2000    JPEG 2000 Lossless Only    For the JPEG Baseline  Jpeg Extended  Process 2  amp  4   JPEG Lossless Non   Hierarchical Process 14  JPEG 2000  and JPEG 2000 Lossless Only transfer  syntaxes  Merge DICOM utilizes libraries from Pegasus Imaging to do  compression and decompression  The RLE transfer syntax is supported directly  in Merge DICOM Toolkit     Pegasus Licenses are JPEG Baseline  JPEG Extended  Process 2  amp  4   and JPEG Lossless Non    required to remove speed Hierarchical Process 14        be compressed or decompressed at a maximum   limitations rate of 3 images  or frames  per second  For JPEG 2000 Lossless and Lossy  a  dialog will be displayed each time the compressor or decompressor is used  Full  licenses can be purchased from Pegasus and configured in Merge DICOM to  remove these compression and decompression limits  The licenses can be  configured in the mergecom pro configuration file        The MCtransferSyntax JpegBaseline transfer syntax is UID  1 2 840 10008 1 2 4 50  JPEG Baseline  Process 1   Default Transfer Syntax for  Lossy JPEG 8 Bit Image Compression  and uses Pegasus libraries 6420 6520   Table 15 details the photometric interpretation and bit depths supported by the  standard compressor and decompressor for this transfer syntax  When lossy  compressing RGB data  the standard compressor by default compresses the  data into YBR_FULL_422 format  The compressor can also compress in   YB
230. n  the configuration files  This will be discussed in more detail in the DEVELOPING  DICOM APPLICATIONS section below     For server  SCP  applications  the order in which transfer syntaxes are specified  in a transfer syntax list dictates the priority Merge DICOM places on them during  association negotiation  For example  inthe  US_Syntax_List  specified  above  if a client  SCU  proposed the Ultrasound storage service with the RLE  compressed transfer syntax and the implicit VR little endian transfer syntax   Merge DICOM would select the RLE transfer syntax because it was listed first in  the transfer syntax list     When    transfer syntax list is not specified in a service list the priority Merge  DICOM Toolkit places on transfer syntaxes during association negotiation is  dependent on the hardware platform  On little endian machines  Intel based  Systems  the priority order is  Explicit VR Little Endian  Implicit VR Little Endian   and Explicit VR Big Endian     Merge DICOM also supports DICOM role negotiation through its service lists   Whereas in previous examples  the same service list could be used for both  client  SCU  and server  SCP   these service lists are specific to the role to be  negotiated for each service      SCU Service List   SERVICES SUPPORTED  SERVICE 1    ROLE 1       1 4 Number of Services  STORAGE COMMITMENT PUSH  SCU                                   SCP Service List   SERVICES SUPPORTED  SERVICE 1    ROLE 1       1 4 Number of Services  STORAGE
231. n classes  that are thrown for serious problems within the Assembly or when untenable  conditions have been detected  Most applications would not catch these  exceptions     When an instance of MCexception is thrown  a message is logged to the Merge  DICOM log file if the severity level of the exception is enabled in the merge  ini         Most exceptions have a severity level of  error  and are always logged      Each MCexception object has a public exceptionNumber field that identifies the  exception  If desired  you may simply catch MCexception and then interrogate  the exceptionNumber property to determine which specific exception was thrown   The exception numbers are defined by constants in the MCexception class and  listed in Table 10  The following  for example  may be used to check exception  after a network read     53    Merge DICOM Toolkit               User s Manua    try    msg   assoc read 30000      catch  MCassociationReleasedStatus e        Normal association completion   System Console Out WriteLine  Association Released        catch  MCexception e        Association is no longer active                                                    if  e exceptionNumber    NETWORK SHUTDOWN   System Console Out WriteLine  Network dropped     lse if  e exceptionNumber    ASSOCIATION ABORTED   System Console Out WriteLine  Assoc  abort     lse if  e exceptionNumber    INVALID  MESSAGE RECEIVED   System Console Out WriteLine   Invalid msg     lse if  e exceptionNumber    N
232. n of the  application profile can be found in Merge DICOM Toolkit  Users Manual     This section will define how each parameter should be defined within the  application profile     Sections  The application profile contains the following sections     176 M RGE    Healthcare    User s Manual    Table 29  Application profile section headings    Section     lt remote_application_title gt      lt service_list_name gt      lt syntax_list_name gt     Parameters    Description    Section describing a remote DICOM Application  Entity title s   The remote Application Entity titles  listed here must be 1 to 16 bytes in length with no  embedded spaces  Simply  this section is where  you list the DICOM applications you want to  communicate with     List s  of DICOM services that will be provided by  the Application Entities listed in the    lt remote_application_title gt   sections  The service  names listed here must be 1 to 33 bytes in length  with no embedded spaces  Simply  this section is  where you list the services that are provided by  the remote DICOM applications     List s  of DICOM transfer syntaxes that will be  supported by the services listed in the     service list name    sections  The transfer  syntaxes must be one of those listed in Table 34        The application profile contains the following parameters     Table 30  Application profile section headers    Parameter Section    Description    PORT_NUMBER  lt remote_application_title gt    This parameter is the TCP IP 
233. n will be automatically filled  in if you have not set them yourself     e The Implementation Class UID  0002 0012  will be filled in with the value set  for the IMPLEMENTATION CLASS UID configuration value in the  mergecom pro file     e The Implementation Version Name  0002 0013  will be filled in with the value  set for the IMPLEMENTATION VERSION configuration value in the  mergecom pro file     The following example is taken from the StorageSCP sample application     Capplication myApp     non null reference  CdimseMessage msg     a network message just received  Cfile fileObj   new MCfile msg   MyFileName    CdataSink destination   new  MCfileDataSink fileObj FileName    CmediaStorageService mediaService   new  MCmediaStorageService  myApp            try    mediaService writeFile fileObj  0  destination       catch  Exception        System Console Out WriteLine  writeFil             failed   e         133    Merge DICOM Toolkit                User s Manual    The DICOMDIR file    As discussed earlier  in each DICOM File Set  containing many DICOM files   Review  their must exist a single DICOM File with the reserved File ID  DICOMDIR                 This      contains identifying information for the file set that most often includes     directory entities  directory of the file sets contents  A media interchange application would make  directory records  use of and maintain the DICOMDIR to locate a particular file within the file set for  processing     Structure    A in
234. nd command     MCfile myFile   MCfile  MyFileName     or   MCfile myFile   new MCfile          The filename parameter  if used  provides the name of the operating system file  to be associated with this MCfile object     Just as when you construct an empty MCdimseMessage object for networking   when you construct an empty MCfile object  the message info and data dictionary  files are not accessed  This object contains no pre allocated attributes in the  contained MCfileMetalnfo and MCdataSet objects  and the  setServiceCommand method must be called to set the service and command  for this file before it can be written to the file set  As in the case of networking   this approach is more efficient but penalizes you in the area of run time error  checking     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Preparing to save a  network message to file    Service and Command  Properties    setServiceCommand    ServiceName  Command    File Meta Information  Attribute Set    MCfileMetalnfo  Metalnfo    M RGE    Healthcare    Convert an MCdimseMessage object to an MCfile object    Another form of the constructor converts a network message object into a file  object associated with a specified file system file           MCdimseMessage message     a non null referenc  MCfile myFile   MCfile  message     MyFileName            The data set contained in message will be used in this object     Note  The original MCdimseMessage and the new MCfile objects will be 
235. ng    Key Object Selection   Macular Grid Thickness and Volume Report   Mammography CAD SR   MR Image Storage   MR Spectroscopy Storage   Multi frame Grayscale Byte Secondary Capture Image Storage    Multi frame Grayscale Word Secondary Capture Image Storage    Command    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE    C STORE       M RGE    Healthcare    M RGE    Fiealthcare    Service   Multi frame Single Bit Secondary Capture Image Storage  Multi frame True Color Secondary Capture Image Storage  Nuclear Medicine Image Storage   Positron Emission Tomography Image Storage  Procedure Log   Raw Data Storage   Real World Value Mapping Storage   RT Beams Delivery Instruction Storage   RT Beams Treatment Record Storage   RT Brachy Treatment Record Storage   RT Dose Storage   RT lon Beams Treatment Record Storage   RT lon Plan Storage   RT Plan Storage   RT Image Storage   RT Structure Set Storage   RT Treatment Summary Record Storage    Secondary Capture Image Storage    Segmentation Storage    Surface Segmentation Storage   Spatial Registration Storage   Spatial Fiducials Storage   Spectacle Prescription Report Storage  Standalone Overlay Storage  Standalone Curve Storage  Standalone Modality LUT Storage  Standalone VOI LUT Storage    Ultrasound
236. ng with their values into  XML string by using the writeTOXML method of the MCattributeSet  The  writeTOXML method creates an XML string describing the contents of the  MCattributeSet  The XML buffer is written to the stream identified by the stream  object provided     Note  If the object contains an attribute with a Value Representation of SQ   sequence of items   each item in the sequence will be converted into its  XML representation     The following example shows how the writeTOXML method is utilized at a high  level        MCdataSet ds     a non null referenc   MCxmlOptions xmlOptions   MCxmlOptions XmlOptIncludeBulks    XmlOptExcludeSequences    StreamWriter writer   new StreamWriter     myXMLFile            convert DICOM DataSet to an XML file   ds writeToXML  writer  xmlOptions      writer Close             The following configuration flags are defined in the MCxmlOptions enumeration  and are available for the Attribute Set to XML conversion        Use the default settings             XmlOptDefault   0x0      Store bulk attributes  VR is OB or OW  in the XML  XmlOptIncludeBulks   0  1      Store Pixel Data buffer in the XML  XmlOptIncludePixelData   0x2      Do not store Sequence attributes in the XML  XmlOptExcludeSequences   0x4      Do not store Private attributes in the XML  XmlOptExcludePrivateAttributes   0x8      Use Base64 encoding for bulks and UN VR attributes  XmlOptBase64Binary   0x10       98    M RGE    Healthcare    Merge DICOM Toolkit      XML to Att
237. nnex A in Part 7 of the DICOM standard for more information     TCP IP Listen Port    ListenPort The ListenPort property retrieves the port number that the association is using  to listen for TCP IP connection requests     MCapplication object of the local AE    LocalApplication The LocalApplication property retrieves the MCapplication object identifying  the DICOM application responsible for this MCassociation object     M RGE 73    Fiealthcare    Merge DICOM Toolkit      LocalApplicationTitle  RemoteApplicationTitle    LocallmplementationClassUid  LocallmplementationVersion  RemotelmplementationClassUid  RemotelmplementationVersion    LocalMaxPDUsize  RemoteMaxPDUsize    ProposedContextList    NumberOf   ProposedContexts    ReadTimeout    74    NET C  User s Manual    Application Entity Title    Each DICOM application is assigned a application entity ID  known also as the  application       The LocalApplicationTitle property retrieves the  application title of the local application and the RemoteApplicationTitle  property retrieves the application title of the remote application    Implementation Class UID and Implementation Version    The identification of an implementation of the DICOM standard relies on two  pieces of information  the Implementation Class UID  required  and the  Implementation Version Name  optional   The DICOM standard requires that  association requestors and acceptors notify each other of their respective  Implementation Class UID  The LocalImplementa
238. nsfer syntax     Every time a new VR is added to the standard  there is no way to determine if the  length field in explicit value representation transfer syntaxes should be encoded  as 2 bytes or 4 bytes  so a general parser could not be properly written to handle  future VRs     The need for this supplement is mainly for use in  archive  systems  An  archive   will typically want to preserve the private attributes contained within a message  for later use  There also may be a need to add support for new image objects  with new VRs to an  archive  system without having to change the software     Unfortunately  the method that Supplement 14 specifies for encoding UN value  representation attributes is in some cases not compatible with older DICOM  implementations  Versions previous to 2 2 2 of the Merge DICOM toolkit do not  parse these attributes properly  The MCassociation read method will fail and  the association will be aborted if a UN VR attribute is received  This has  obviously caused a variety of interoperability problems in the field     The typical DICOM scenario where UN VR can cause a DICOM communication  failure is the following  a modality exports a series of images to a PACS or   archive  system via the DICOM storage service class  The images were  encoded in the implicit VR little endian transfer syntax and contain multiple    161    Merge DICOM Toolkit      SCU application strategy    SCP application strategy    162    NET C  User s Manual    private attribu
239. ntax follows     mc3echo   c count    r remote host    1 local app title     p remote port  remote app title             count Integer number specifying the number of echoes  to send to the remote host  If  c is not  specified  one echo will be performed   r remote host Host name of the remote computer If  r    is not specified  the default value for  remote host is configured in the Application  Profile    l local app title Application title of this program   If  l is not specified  the default value  for local app title is MERGE ECHO SCU   p remote port Port number the remote computer is  listening on  If  p is not specified  the  default value for remote host is configured  in the Application Profile                          mc3list    mc3list displays the contents of binary DICOM message files in an easy to  read manner  The message files could have been generated by mc3file  see  below  or written out by your application     mc3list is a useful educational tool as well as a tool that can be used for off   line display of the DICOM messages your application generates or receives     The command syntax follows     mc3list   filename     t   syntax      m    filename Filename containing message to display   t Specify transfer syntax of message  where  syntax    il   implicit little endian      el        explicit little endian   or  eb   explicit  big endian   m Optional display a DICOM file object    If the DICOM service and or command cannot be found in the message file  a
240. null referenc  int count   myAttr Count   MCvr vr   myAttr ValueRepresentation   int length   myAttr ValueLength    H catch  MCattributeNotFoundException e  1     catch  MCincompatibleValueException e  1     catch  MCvrAlreadyValidException e                      Assigning Attribute Values from MCattribute    Each DICOM attribute may have zero or more values assigned to it  based on  the Value Multiplicity assigned to the attribute  You have several methods  available to assign values to attributes in an MCattribute object     e setValue and addValue  e MCattribute index        addEncapsulatedValue    Assigning Attribute Values from MCattributeSet    The MCattributeSet class also has several convenience methods for assigning  values to specific attributes  These routines ensure an attribute has been added  into the attribute set  and then set or append the value  There are setValue and  addValue routines  similar to the MCattribute class     89    Merge DICOM Toolkit      Do you want to  set or add  your value     appendNullValue  putNullValue    Identifying the attribute    90    NET C  User s Manual    Difference between setValue  addValue  and indexer    The    setValue    methods first remove any existing values from the attribute and  then append the new value  The    addValue    method appends a value to the  attribute     The indexer can be used to set specific values if the attribute is multi valued   The following example shows the user of the indexer and the setValu
241. o    DICOM               Convert Image Formats    mc3comp    The mc3comp utility can be used to compare the differences between two  DICOM objects  The objects can be encoded in either the DICOM file or     stream    format and do not have to be encoded in the same format  The utility  will output differences in tags between the messages taking into account  differences in byte ordering and encoding  The syntax for the utility is the  following        mc3comp   tl   syntax    t2  lt syntax gt     file    o  m1  m2   filel file2    tl   syntax   Optional specify transfer syntax of    filel     message  where  lt syntax gt       il    for implicit  little endian  default      el    for explicit  little endian     eb    for explicit big endian   t2  lt syntax gt  Optional specify transfer syntax of    file2     message  where  lt syntax gt       il    for implicit  little endian  default      el    for explicit  little endian     eb    for explicit big endian          e  lt file gt  Optional exception file of all tags to  ignore in comparison      Compare OB OW OF  e g   binary pixel  data   mi Compare    filel    in DICOM 3 file format    m2 Compare    file2    in DICOM 3 file format    h Show these options    filel DICOM SOP Instance  message  fil   file2 Another DICOM SOP Instance  message  fil          Example   mc3comp  t1 il  m2  o 1        1 dcm    mc3conv    The mc3conv utility can be used to convert a DICOM object between various  transfer syntaxes and formats  The util
242. o implements the MCdataSink  interface  which is described in a subsequent section  The MCmemoryDataSink  class implements a data source where the data is supplied from memory  The  MCmemoryDataSink class constructor takes an MCdata instance in the  constructor which contains the actual data being supplied     93    Merge DICOM Toolkit      Retrieving values  from an attribute set    Indexers    94    NET C  User   s Manual    Retrieving Attribute Values    When your AE receives a DICOM message  it will most often need to examine  the values contained in the message attributes to perform an action  e g   store  an image  print a film  change state      If your application is a server  the  message conveys the operation your server should perform and the data  associated with the operation  If your application is a client  the message may be  a response message from a server on the network resulting from a previous  request message to that same server     Once you have received an MCattributeSet object  probably one contained in an  MCdimseMessage object   you can use the indexer for MCattributeSet to retrieve  values   Note that you can also use a different form of the indexer to retrieve  MCattribute objects  which in turn have an indexer to retrieve values   The  indexers have the following forms     public Object this uint tag  int index     public Object this  MCtag tag  int index     public Object this  uint tag  int index  Object defaultValue    public Object this  MCta
243. o provide extended negotiation  information for one or more services in the list  The extended negotiation  information will be used during association negotiation by Merge DICOM Toolkit   The existence of extended negotiation information is dependent on the service  and must be documented in the application s DICOM Conformance Statement   The negotiation information is provided by the toByteArray method of the  specified MCnegotiationInfo instance  If a nu11 pointer or an empty byte array is  provided by the toByteArray method  this call is treated as if it were     clearNegotiationInfo method call     The contains method determines if the proposed context list contains an  MCproposedContext element or if it contains an element that has a specified  service name     The getContext method uses a service name to identify and return an  MOproposedContext object from those encapsulated in the proposed context list     The ListName property retrieves the name that uniquely identifies this list  among all proposed context service lists used by the library     The GetEnumerator method creates and returns an enumerator for all of the  MOproposedContext objects encapsulated in the proposed context list  The  iterator will present the elements in the order they were presented when this  object was created     The Size property contains the number of elements in the  MCproposedContextList object     The toArray method returns a reference to an array of MCproposedContext  items that rep
244. of the Assembly to open  connections with other DICOM devices on a network  and to build and exchange  DICOM messages or DICOM files  The  NET Assembly is written in C  and all  examples are supplied in C    although it can be utilized from other  NET  languages     Figure 2 presents a pictorial representation of a DICOM Application Entity  Merge  DICOM Toolkit implements for you everything in Parts 5  6  7  8  and 10 of the  DICOM Standard  It also makes it much easier for your application to implement  according to Parts 3 and 4 by supplying many tools for the management of  DICOM messages  and to Part 12 by supplying    hooks    to your applications  underlying file system     DICOM Application Entity    Association  Negotiation  Part 7  Annex D Information Objects  Part 3       Data Dictionary   Part 6    Upper Layer Data Structures and Encoding   Part 5  Association    Services    DICOM Message Services DICOM Storage M edia  Element  DIM SE  and File Format  Part 7 Part 10    Upper Layer Presentation Data Service DICOM Media Formats  Part 8 and Physical M edia  Part 12    Ka  M erge Your  y  Functionality Functionality    Figure 2  The DICOM Application Layer       The DICOM Toolkit also supplies useful utility programs for testing a DICOM  network connection  creating sample DICOM messages and writing them to a  file  and for validating and listing the contents of DICOM messages     M RGE 5    Healthcare    Merge DICOM Toolkit      NET C  User s Manual    Finally  sampl
245. often used to capture this data  but they are often not  useful when the data is being transmitted over a secure network connection  as  the data is often encrypted  Merge DICOM provides a network capture facility  that will capture network data as it is sent or received  The data that is captured  to one or more files and is formatted such that it can be analyzed using the  MergeDPM  utility     Refer to Appendix D for a discussion of the following configuration parameters  that are used to configure the network capture facility  They are encoded in the   TRANSPORT PARMS  section of the System Profile  mergecom pro      NETWORK CAPTURE  CAPTURE FILE  CAPTURE FILE SIZE  N   R                                     UMBER OF CAP FILES  EWRITE CAPTURE FILES                            Service Profile    The Service Profile  usually called mergecom srv  informs the toolkit what  types of services and commands it supports  and what the corresponding  message info files are  This file also lists the meta services and items supported  by the toolkit  Items are the nested    sub messages    contained within attributes of  a message having the VR Sequence of Item  SQ  and will be discussed in  greater detail later  The name and location of the service profile are specified in  the  MergeCOM3  section of the Merge DICOM initialization file     The service profile  along with the data dictionary and message info files  is  generated from the Merge DICOM Database and should be modified by ot
246. on    new MCbasicCodedEntry  113012    DCM     Key Object Description      sr RootItem AddChild item  MCrelationshipType CONTAINS            Adding an IMAGE from Row 8     The values  1 2 3 4 1    1 2 3 4 5 1  suppose to be an image SOP    Class    and SOP Instance    7  item   new MCimageItem new MCsopInstanceReference  1 2 3 4 1     1 23 45  1      sr RootItem AddChild item  MCrelationshipType CONTAINS          Creating a new DataSet      MCdataSet dataSet   new MCdataSet  MCdimseService C STORE         KEY OBJECT  SELECTION DOC         Saving SR Document contentent into the DataSet      sr Write  dataset             Adding other root lvel attributes          dataSet setValue  MCdicom SOP_CLASS_UID   1 2 840 10008 5 1 4 1 1 88 59     dataSet setValue  MCdicom SOP_INSTANCE_UID   1 2 3 4 5 6 7 300     dataSet setValue  MCdicom STUDY_DATE   19991029      dataSet setValue  MCdicom CONTENT_DATE   19991029      dataSet setValue  MCdicom STUDY_TIME   154500      dataSet setValue  MCdicom CONTENT_TIME   154510      dataSet setValue  MCdicom ACCESSION_NUMBER   123456      dataSet setValue  MCdicom MODALITY   KO      dataSet setValue  MCdicom MANUFACTURER   MERGE      dataSet setValue  MCdicom REFERRING_PHYSICIANS_NAME     uke Wilis nDe AMD 10   dataSet setValue  MCdicom REFERENCED PERFORMED PROCEDURE STEP SEQUENCE   null    dataSet setValue MCdicom PATIENTS NAME   Jane Doo     dataSet setValue MCdicom PATIENT ID   234567     dataSet setValue MCdicom PATIENTS BIRTH DATE   19991109   
247. on you  are rejecting and what type of rejection it is  If you specify no parameters to the  reject method  as in the example above   it is assumed that the reject is  permanent  i e  there is no need for the remote application to    call later     and no  reason is provided     If you wish to give a reason  use this form of the reject method        bool permanentReject   false   assoc reject  permanentReject   MCrejectReason TEMPORARY CONGESTION            The reason codes are defined in the MCrejectReason enumerated value   These codes are available     MCrejectReason NO REASON GIVEN  MCrejectReason APPLICATION CONTEXT NAME 15 NOT SUPPORTED  MCrejectReason CALLING AE TITLE NOT RECOGNIZED  MCrejectReason CALLED AE TITLE NO ECOGNIZED  MCrejectReason TEMPORARY CONGESTION  MCrejectReason LOCAL LIMIT EXCEEDED                                                                                                          The association requestor  normally the client application  must check for  association rejection when it makes the association request   Other exceptions  also need to be checked  please see to the MCaassocition class in the Assembly  Windows Help File                        try    myAssoc   MCassociation requestAssociation  myAE    remoteApp        catch  MCassociationRejectedException             catch  MCconnectionFailedException            catch  MCnegotiationAbortedException e          catch  MCunknownHostNameException e          catch  Exception e                 
248. onstrains on the Content Item Types and  their relationships  Figure 18 illustrates the typical SR Document structure  The  top level header is similar to the DICOM image IODs and consists of the same  Patient  Study and Series modules  The main difference from other IODs is the  SR Document Content Module  The attributes in this Module convey the  content of an SR Document     141    Merge DICOM Toolkit                   The SR Document Hierarchy    User s Manual          Patient Module  Patient Name  Patient ID  Patient Sex  Patient Date Of Birth             General Study Module  Study Instance UID  Accession Number          SR Document Series Module  Modality          SR Document General Module  Referenced Request Sequence   gt Requested Procedure ID   gt Requested Procedure Description          SR Document Content Module       Node 1             Contains          Node 2                   Has Obs Ctx          Node C1 Node C2             Has Properties                      Node 3             Node 4                   Figure 18  SR Document Structure example    The Document Content Module has a tree structure and consists of a single root  Content Item  Node 1  that is the root of the SR Document tree  The root  Content Item conveys either directly or indirectly  all of the other nested Content  Items in the document  The hierarchical structuring of the Content Tree is  provided by recursively nesting Content Items  A parent  or source  Content Item  has an explicit relations
249. operating system file that is related to this  MCfile object  If the fileName parameter is not specified the File property  defaults to    UNSPECIFIED        Constructing Item Objects    MCitem objects describe DICOM items used normally in sequence of items  SQ   attributes  They are identified  in Merge DICOM Toolkit  by specific  configured  item names     MCitem item   new MCitem          Or     String itemName    Configured Item Name    MCitem item   new MCitem itemName         If the first form of the constructor is used an  empty  MCitem object will be  created  The attribute list for the MCitem will initially be empty     The second constructor form populates the MCitem s attribute list with attributes  defined by the itemName parameter  The itemName is used to access  configuration information that describes the attributes of the message  If the  itemName is unknown to Merge DICOM an empty attribute list is created and a  warning message is logged     Get Set item name    You can use the ItemName property of the MCitem class to set or get the item  name     ItemName    Constructing MCdataSet Objects    DICOM network services  MCdimseService classes  and file service   MCmediaStorageService class  each deal with information objects  These  objects are sets of attributes that provide information about the real world entities  being acted upon by the service  The MCdataSet class encapsulates such an  information object     The DICOM messages used in DIMSE services  MCdim
250. or this transfer  syntax        Table 18  JPEG 2000 Lossy Supported Photometric Interpretations and Bit Depths    JPEG 2000  When used for Lossy     Photometric MONOCHROME 1 YBR_ICT   RGB  Interpretation MONOCHROME2    ms fe  n  e  es                                                            MCtransferSyntax Jpeg2000LosslessOnly transfer syntax is UID  1 2 840 10008 1 2 4 90  JPEG 2000 Image Compression  Lossless Only   and  uses Pegasus libraries 6820 6920 for lossless  Table 19 details the photometric  interpretation and bit depths supported by the standard compressor and  decompressor for this transfer syntax        Table 19  JPEG 2000 Lossless Supported Photometric Interpretations and Bit Depths    JPEG 2000 Lossless    Photometric MONOCHROME 1 YBR_RC   RGB  Interpretation MONOCHROME2       eser      e  e  e s      emen fe      e  w  e           M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    SPECIAL NOTES     You can validate  MCdimseMessage   MCfile  and MCdataSet  instances    Validate method    message txt can be very  useful    M RGE    Fiealthcare    When using the standard compressor  all data needs to be right justified  i e  bit O  contains data  but the highest bits may not  RGB and YBR must be non planar   R1G1B1  R2G2B2      or Y1Y2B1R1  Y3YABSR3         MCtransferSyntax Jpeg2000 and MCtransferSyntax Jpeg2000LosslessOnly will  cause a irreversible  or reversible color transformation when compressing RGB  data  The Photometric Interp
251. orage   Enhanced XA Image Storage   Enhanced XRF Image Storage   Secondary Capture Image Storage   Autorefraction Measurements  Storage   Keratometry Measurements Storage   Lensometry Measurements Storage   Ophthalmic Axial Measurements  Storage   Ophthalmic Visual Field Static  Perimetry Measurements Storage   Subjective Refraction  Measurements Storage   Visual Acuity Measurements  Storage   Multi frame Grayscale Byte  Secondary Capture Image  Storage   Multi frame Grayscale Word  Secondary Capture Image  storage   Multi frame Single Bit Secondary  Capture Image Storage   Multi frame True Color Secondary  Capture Image Storage       M RGE    Healthcare    Merge DICOM Toolkit               User   s Manual    Service Class Services Description    Segmentation Storage   Surface Segmentation Storage   Basic Structured Display Storage   Basic Text Structured Reporting   Comprehensive Structured  Reporting   Enhanced Structured Reporting   Key Object Selection   Chest CAD SR   Colon CAD SR   Mammography CAD SR   X Ray Radiation Dose SR   Encapsulated CDA Storage   Encapsulated PDF Storage   Procedure Log   Blending Softcopy Presentation  State Storage   Color Softcopy Presentation State  Storage   Grayscale Softcopy Presentation  State Storage   Pseudo Color Softcopy Presentation  State Storage   12 lead ECG Waveform Storage   Ambulatory ECG Waveform Storage   Arterial Pulse Waveform Storage   Basic Voice Audio Waveform  Storage   Cardiac Electrophysiology  Waveform Storage   Gen
252. pe    TEXT    CODE    DATETIME  DATE    TIME  UIDREF    PNAME  COMPOSIT  E    IMAGE    Merge DICOM Toolkit  Class    MCtextltem    MCnumltem  MCcodeltem    MCdateTimeltem    MCdateltem    MCtimeltem    MCuidReferenceltem    MCpersonNameltem    MCcompositeltem    MCimageltem    Concept Name    Type of text     0     Findings   or  name of identifier   e g      Lesion ID       Type of numeric  value or  measurement   e g    BPD     Type of code  e g     Findings     Type of DateTime   e g    Date Time  of onset     Type of Date  e g     Birth Date     Type of Time   e g    Start Time     Type of UID  e g     Study Instance  UID     Role of person   e g    Recording  Observer     Purpose of  Reference    Purpose of  Reference    er s Manual    Description    Free text  narrative  description of unlimited  length  May also be used  to provide a label or  identifier value     Numeric value fully  qualified by coded  representation of the  measurement name and  unit of measurement     Categorical coded value   Representation of  nominal or non numeric  ordinal values     Date and time of  occurrence of the type of  event denoted by the  Concept Name     Date of occurrence of the  type of event denoted by  the Concept Name     Time of occurrence of  the type of event denoted  by the Concept Name     Unique Identifier  UID  of  the entity identified by  the Concept Name     Person name of the  person whose role is  described by the  Concept Name     A reference to one  Composite SOP 
253. pecifies where the messages are  logged  file  screen  both  or neither   In most cases the INFO  WARNING  and  ERROR messages will be sufficient  The      MESSAGE settings  where n is an  integer between 1 and 9   turns on lower level protocol tracing capabilities   These capabilities can prove useful when running into difficulties communicating  with other implementations of DICOM over a network and can be used by Merge  OEM service engineers in diagnosing lower level network problems              Application Profile    The Merge DICOM Application Profile  usually called mergecom  app  specifies  the characteristics of your own application entity and the AE s your application  will connect with over a network  The name and location of this file is specified in  the  MergeCOM3  section of the Merge DICOM initialization file     When your application acts as a client  SCU   you must specify in the Application  Profile the network address of the server  SCP  Application Entities you wish to  connect  open an association  with  Your client refers to the application entity by  a DICOM Application Entity Title and this is the same way it is referred to in the  application profile  The AE title consists of a string of characters containing no  spaces and having a length of 16 characters or less  A section of the profile  exists for each Server AE you wish to connect with     35    Merge DICOM Toolkit               User s Manual    For example  if your application is an image sourc
254. pplication conformance statements specify the DICOM SOPs which are  supported by each Application Entity  For SCP Entities  the initiation of  associations  Please see the  System Profile  section in ANNEX B   CONFIGURATION PARAMETERS and the         Wait For Association  or          Wait For Secure Association  definition in this Reference Manual  For  SCU Entities  the list of supported SOP classes will correspond to the services  specified in  mergecom app  for any SCPs to which the SCU wishes to connect        Number of Associations    The Merge DICOM Toolkit does not impose any limit on the number of  simultaneous associations that can be requested or accepted  The only limitation  on the number of simultaneous associations is imposed by the operating system  and available resources  However  if your application enforces this limit  it is  defined here     The MAX PENDING  CONNECTIONSsetting in the    mergecom pro    file refers to  the maximum number of outstanding connection requests per listener socket  It  does not limit the maximum number of simultaneous associations     Asynchronous Nature    Merge DICOM Toolkit does not currently support multiple outstanding  transactions over a single association     Implementation Identifying Information    Application conformance statements specify the Implementation Class Unique  Identifier  UID  for the application  as well as the Implementation version name   These identifiers are taken from the mergecom pro configuration fi
255. private group number and element number     MCtag tag   try     tag   new MCtag  Groupl    uint 0x0009   uint 0x10      catch  MCillegalArgumentException e           or   try     tag   new MCtag  0x00091010U     Groupi          catch  MCillegalArgumentException e              The numbers may be specified as two unsigned integers  An  MCillegalArgumentException will be thrown if the group number was an even  number  if the element number was greater than OxFF  or if the private group  code string was empty     Using the MCdataElement class    MCdataElement The MCdataElement class is used to define DICOM data elements  This is most  often used to define data elements that are not defined in the data dictionary   DICOM data elements may be  standard   i e  they are defined in the data  dictionary  or    non standard     those not defined in the data dictionary      Merge DICOM allows you to define both private and non private data elements   by simply using a private or non private MCtag object to identify the data  element     78 M RGE    Healthcare    Merge DICOM Toolkit      Standard  Data Elements    Non standard  Data Elements    M RGE    Fiealthcare    NET C  User   s Manual    Constructing standard data elements  Standard data elements are built using the following constructor     MCdataElement de   try    MCtag tag   new MCtag 0x0008  0  0010    de   new MCdataElement  tag       catch  MCnotStandardElementException e                                           MCnotStandar
256. quest commands  are C STORE RQ  N GET RQ  and N SET RQ  Example response commands  are C STORE RSP  N GET RSP  and N SET RSP     IMPORTANT  It is important to note that this service definition level is where the Merge DICOM  Toolkit Library leaves off  and your Application begins  While Merge DICOM  supplies running sample applications source code for your platform  they are only  supplied as an example  They clearly explain the requirements that  implementing certain DICOM services places on your application and provide  worthwhile but primitive examples of how to approach your application with the  toolkit  While you will see that the toolkit saves you a great deal of  DICOM  work     it does not implement your end application for you     Association Negotiation    One of the areas where Merge DICOM Toolkit does a great deal of the  DICOM  work  for you is in opening an association  session  with another DICOM AE over  the network  DICOM application entities need to agree on certain things before  they operate with one another  open an association   these include     MCassciation    e       services that can be performed between the two devices  which also  impacts the commands and object instances that can be exchanged     e       transfer syntax that shall be used in the network communication   The transfer syntax defines how the commands and object instances are  encoded  on the wire      The exchange of DICOM commands and object instances can only occur over an  open as
257. r   new StreamWriter   myFile          convert DICOM file to an XML file   myFile writeToXML  writer  xmlOptions      writer Close             The following configuration flags are defined in the MCxmlOptions enumeration  and are available for the MCabstractMessage to XML conversion        Use the default settings             XmlOptDefault   0x0      Store bulk attributes  VR is OB or OW  in the XML  XmlOptIncludeBulks   0  1      Store Pixel Data buffer in the XML  XmlOptIncludePixelData   0x2      Do not store Sequence attributes in the XML  XmlOptExcludeSequences   0x4      Do not store Private attributes in the XML  XmlOptExcludePrivateAttributes   0x8      Use Base64 encoding for bulks and UN VR attributes  XmlOptBase64Binary   0x10    XML to Message conversion    The MCabstractMessage provides a readFromXML method that can be utilized  to read attribute values from an XML string into MCabstractMessage s derived  classes  MCfile and MCdimseMessage      The content of the message is not cleared before processing XML attributes  The  existing attributes in the message are overridden if they are present in the XML  string     M RGE    Fiealthcare    Merge DICOM Toolkit      Reading messages    MCassociation read    M RGE    Fiealthcare    NET C  User   s Manual    The following example shows how the readFromXML method is utilized at a high  level        StreamReader reader   new StreamReader     myXMLFile        MCfile file   new MCfile      file readFromxML  reader      re
258. r  Uid  BaseClass  MetaClass  plus an overridden Equals  method  See the sample code below     MCsopClass sopl   MCsopClass getSopClassByUid      1 2 840 10008 5 1 1 1       MCsopClass sop2   MCsopClass getSopClassByName    BASIC FILM SESSION     if   sopl Equals sop2    System Console Out WriteLine  They should be equal     System Collections IList baseClasses   sopl BaseClasses           75    Merge DICOM Toolkit    NET C  User s Manual             if  baseClasses    null   System Console Out WriteLine    Not a meta sop     System Collections BitArray commands   sopl Commands   qf   sopl Name Equals  sop2 Name      System Console Out WriteLine    Should be equal     if   sopl Uid equals  sop2 Uid      System Console Out WriteLine    Should be equal     if sopl Number    sop2 Number    System Console Out WriteLine    Should be equal     if sopl BaseClass    System Console Out WriteLine  That s right     if  sopl MetaClass    System Console Out WriteLine  That s right                   Earlier we saw how MCsopClass instances are used when creating new  MCproposedContext objects     Using the MCvr class    The MCvr class encapsulates a DICOM Value Representation  VR   DICOM  defines a set of valid value representations for data elements encoded to the  standard  The MCvr class contains a number of staticly defined MCvr instances  for each of the valid VRs  The static field names are     MCvr name Value Representation used for        vrAE Application Entity    vrAS Age String  
259. rce classes are used  Merge DICOM  NET has the  capability of encapsulating each frame of data according to the encoding  specified in Part 5 of the DICOM standard  Table 13 contains a sample encoding  of frames     Table 13  Sample Encapsulated Pixel Data    Pixel Data Element    Basic Offset First Fragment  Single Second Fragment  Single Sequence  Table with NO   Frame  of Pixel Data Frame  of Pixel Data Delimiter Item  Item Value    ltem       Item Item Item Value  Item Item Item Value  Sequenc  Tag Length   Tag Length Tag Length               0000   FFFE   0000  Compresse   FFFE   0000  Compresse   FFFE  0000     0000H   E000   04C6H  d Fragment     000    024         EODD  0000H  E000  Fragment   4 4 4 bytes  4 bytes  04  6   4 bytes   4 bytes  024A    4 bytes  4 bytes  bytes  bytes bytes bytes       When encoding encapsulated data  each compressed fragment shown in   Table 13 is set with the addEncapsulatedValue method of MCattribute  This  routine supplies an MCdataSource which contains the encapsulated pixel data   When needed  Merge DICOM will retrieve data from the source and encapsulate   In this case  it is assumed that the MCdataSource is supplying already  compressed data  addEncapsulatedValue can be called multiple times to  add additional compressed frames to an attribute        When decoding encapsulated data  the readNextFrame routine of MCattribute  is used  This method can be repeatedly called to retrieve each encapsulated  frame  Note that the compressed 
260. re made     DEFAULT  YES    When set to NO  disable the exporting  of private attributes in messages  written to the network with the  sendRequestMessage or  sendResponseMessage methods     DEFAULT  YES    When set to NO  disable the exporting  of attributes with a VR of UN in  messages written to the network with  the sendRequestMessage or  sendResponseMessage methods     DEFAULT  YES       M RGE    Healthcare    EXPORT UNDEFINED LENGTH 50       EXPORT GROUP LENGTHS TO NETWORK      FLATE GROW  OUTPUT BUF SIZE      FORCE OPEN EMPTY ITEM      M RGE    Fiealthcare    Section    MESSAGE_PARMS  MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS    Jser s Manual    Description    If YES  messages transferred over the  network or written to disk have their  sequence attributes encoded as  undefined length  This increases  performance of the library     DEFAULT  NO    When set to NO  do not export group  length attributes when using the  MC_Send_Request_Message   and  MC_Send_Response_Message    functions    DEFAULT  NO    The size that the output buffer of  deflate or inflate should grow when it s  size is insufficient  An Info message is  logged each time the buffer grows     DEFAULT  1024    When set to YES  the MCitem  constructor that provides an item name  will act similar to the MCitem  constructer that is used to create an     empty    item  The up front  performance cost of the former  constructer will be reduced  but the  amount of validation done when  adding tags to the ite
261. ree up its resources to the system you  must release it using the Dispose method  This is necessary to free the  resources used by the underlying native dynamic library        myAE dispose       The Application Entity  AE  Title    Current and potentially future DICOM service classes assume that Application  Entity Titles on a DICOM network are unique  For instance  the retrieve portion  of the Query Retrieve service class specifies that an image be moved to a  specific Application Entity Title  and not to a specific hostname and listen port   If  two identical Application Entity Titles existed on a network  a server application  can only be configured to move images to one of these applications  For this  reason  the DICOM Application Entity Title for your applications should be  configurable     You can use the ApplicationTitle property to retrieve the Application Entity Title  of the MCapplication object     59    Merge DICOM Toolkit                User s Manual    MCproposedContextList  MCproposedContext    Use a pre configured  service list            or build your own  service list  at run time    MCtransferSyntaxList  MCtransferSyntax    MCtransferSyntaxList   getObject    60    Association Management  Network Only     Once you have registered one or more networking applications  you will probably  want to initiate an association if you are a client  or wait for an association if you  are a server  Clients will use the requestAssociation method of the  MCassociation cl
262. rence  and Relationship Type is    RTYPE     For  example   R INFERRED FROM     Merge DICOM Toolkit provides following  functions to encode decode references     public void AddReference MCitemRelationship reference   public void RemoveReference  MCcontentItem targetItem   public void RemoveReference  MCitemRelationship reference   public ReadOnlyCollection lt MCitemRelationship gt  References                Value Type  VT     The Value Type field specifies the SR Value Type of the Content Item or conveys  the word    INCLUDE    to indicate that another Template is to be included   substituted for the row   The Merge DICOM Toolkit provides specific classes for  each Content Item Type as it described above     Concept Name    Any constraints on Concept Name are specified in this field as defined or  enumerated coded entries  or as baseline or defined context groups   Alternatively  when the VT field is  INCLUDE   the Concept Name field specifies  the template to be included  The Merge DICOM Toolkit uses the  MCbasicCodedEntry class to specify the Concept Name     You will find that some of the Content Item types require Concep Name in the  constructor and some are not  because it is optional for those Content Item  Types  In that case  the Concept Name can be set by using the public property     Templates define References to coded concepts take the following form     EV or DT  ConceptNameValue  ConceptNameSheme    ConceptNameMeaning            For example  EV  T 04000  SNM3  
263. renced Image Box   VOI LUT Box   Presentation LUT   Basic Annotation Box   Basic Print Image Overlay Box SOP  Class   Print Job   Image Overlay Retired   Basic Grayscale Print Mgmt  Meta   Basic Color Print Mgmt  Meta   Pull Stored Print Mgmt  Meta   Ref  Grayscale Print Mgmt  Meta   Ref  Color Print Mgmt  Meta    Basic Study Content Notification    Description    Exists as a member of  every DICOM File Set  and contains general  information about the file  set and a hierarchical  directory of the DICOM  files contained in the file  set     Management of images  through a query and  retrieval mechanism  based on a small number  of key attributes     Supports the exchange of  any type of worklist from  one AE to another     Printing  or filming  of  medical images and  image related data          hard copy medium  Also   storage of print related  data to interchangeable  media     Allows one DICOM AE to  notify another DICOM AE  of the existence   contents  and source  location of the images of  a study           14    M RGE    Healthcare    Merge DICOM Toolkit      MCpatientManagement   Service    MCstudyManagement   Service    MCresultsManagement   Service    DICOM information model    Objects vs   object instances    Normalized vs  composite    M RGE    Healthcare    NET C     Service Class    Patient  Management    Study    Management    Results  Management    Services    Detached Patient Management  Detached Visit Management  Detached Patient Mgmt  Meta    Detached Study 
264. resent the proposed contexts used in the proposed context list     M RGE    Healthcare    Merge DICOM Toolkit      getNegotiationInfo  PresentationContextID  ResultCode  RoleNegotiated  ServiceName  TransferSyntax    Name         BigEndian  LittleEndian  Encapsulated  ExplicitVR    M RGE    Fiealthcare    NET C  User   s Manual    MCresultContext properties    The MCresultContext class contains the properties of a service that has been  accepted by both sides of a DICOM association  Instances of this class are  returned by the FirstAcceptableContext and NextAcceptableContext properties of  the MCassociation class  The NextAcceptableContext property is repeatedly  accessed until it returns null  siginaling the end of the result context list     The getNegotiationInfo method retrieves any extended negotiation  information that may have been received for the service  If none was received  the method returns false     If extended negotiation information was received for this service  the method  returns true and calls the decode method of MCnegotiationInfo instance  provided to provide the negotiation information     The PresentationContextID property retrieves the DICOM Presentation  Context ID assigned to this context s service for the current association     The ResultCode property retrieves the result reason code returned by the  remote DICOM system for this context     The RoleNegotiated property retrieves the role negotiated for the association  requestor for this service  
265. retation MUST be changed from RGB to     e YBR ICT if MCtransferSyntax Jpeg2000 is used with  COMPRESSION WHEN J2K USE LOSSY   Yes  Lossy color transform for  lossy compression                 e YBR RCT if MCtransferSyntax Jpeg2000LosslessOnly or  MCtransferSyntax Jpeg2000 with COMPRESSION WHEN J2K USE LOSSY      No  Lossless color transform for lossless compression                     Similarly  on the decompression end  the Photometric Interpretation should be  changed back to RGB  but the Lossy Image Compression attribute should indicate  it has been lossy compressed     Validating Attribute Sets    Once your application has a populated message object  either one that you have  built or one that you have received and are about to parse  Merge DICOM Toolkit  supplies DICOM Toolkit DICOM message validation functionality  The  MCabstractMessage derived classes  MCdimseMessage and MCfile  and the  MCdataSet class each provide a validate method that will validate the attribute  sets it contains against the DICOM Standard s specification for its service   command pair     One of the files supplied with Merge DICOM Toolkit is the message txt file   This file contains a listing of all the messages supported by the toolkit and the  parameters they are validated against  message txt is a useful guide in your  application development because it specifies the attributes that can make up the  object instance portion of each message type  service command pair  and is  often easier to us
266. ribute set  conversion    readFromXML    Swapping pixel data  bytes    Swap Method    M RGE    Fiealthcare    NET C  User   s Manual    Converting an XML string into an Attribute Set    You can read attribute values from an XML string into an attribute set by using  the readFromXML method of the MCattributeSet     The content of the attribute set is not cleared before processing XML attributes   The existing attributes in the attribute set will be overridden if they are present in  the XML string     The following example shows how the readFromXML method is utilized at a high  level     StreamReader reader   new StreamReader     myXMLFile        MCdataSet ds   new MCdataSet          convert an XML file into an attribute set  ds readFromXML  reader      reader Close          8 bit Pixel Data    For DICOM   s Implicit VR Little Endian transfer syntax  the pixel data attribute s   7  e0 0010  VR is specified as being OW  independent of what the bits  allocated and bits stored attributes are set to   To reduce confusion  Merge  DICOM Toolkit sets the VR of pixel data for the other non encapsulated transfer  syntaxes to OW     When retrieving or setting pixel data with a MCdataSink or MCdataSource  class  the toolkit assumes that the OW pixel data is encoded in the host system s  native endian format as defined by DICOM  Figure 12 describes how 8 bit pixel  data is encoded in an OW buffer for both big and little endian formats     7 0 T 0    Byte 0 Byte 0  Byte 1 Byte    Byte 2 By
267. ributeSet myAttrSet     non null referenc       myAttrSet tag    attrib     attrib   myAttrSet 0x00080010      M RGE    Healthcare    Merge DICOM Toolkit      Removing a specific  attribute from the set    Getting setting  attribute properties    Filling an attribute set  with values via  MCattribute    Filling an attribute set  with values via  MCattributeSet    M RGE    Healthcare    NET C  User s Manua    Removing Attributes from an Attribute Set    A specific attribute may be removed from an attribute set using the  removeAttribute method of the MCattributeSet class  The attribute to be  removed can be identified by 1  a uint tag reference or 2  by an MCtag reference   The removeAttribute methods do not return a value        MCattributeSet myAttrSet     non null referenc  MCtag tag   new MCtag 0x0008  0x0010         Both of the following accomplish the same thing  myAttrSet removeAttribute  tag    myAttrSet removeAttribute  0x00080010      The second form of the call will throw an MCattributeNotFoundException if  the attribute is not in the set     Attribute Properties    The MCattribute class provides three methods to retrieve or set properties of the  attribute  The ValueRepresentation property retrieves the attribute s value  representation  the Count property returns the number of values assigned to the  attribute  and the ValueLength property returns the length in bytes of this  value if it were encoded in a DICOM stream or file     try    MCattribute myAttr     non 
268. rocess 17  amp   19  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 60    This value defines the UID for JPEG  Spectral Selection  Hierarchical   Process 20  amp  22  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 61    This value defines the UID for JPEG  Spectral Selection  Hierarchical   Process 21  amp  23 transfer syntax     DEFAULT  1 2 840 10008 1 2 4 62  This value defines the UID for JPEG  Full Progression  Hierarchical  Process  24  amp  26  transfer syntax     DEFAULT  1 2 840 10008 1 2 4 63       M RGE    Healthcare    Section Description    JPEG FULL PROG HIER 25 27 SYNTAX ASSOC PARMS This value defines the UID for JPEG  Full Progression  Hierarchical  Process  25  amp  27  transfer syntax   DEFAULT  1 2 840 10008 1 2 4 64  JPEG LOSSLESS HIER 28 SYNTAX ASSOC PARMS This value defines the UID for JPEG  Lossless  Hierarchical  Process 28   transfer syntax   DEFAULT  1 2 840 10008 1 2 4 65  JPEG LOSSLESS HIER 29 SYNTAX ASSOC PARMS This value defines the UID for JPEG  Lossless  Hierarchical  Process 29   transfer syntax   DEFAULT  1 2 840 10008 1 2 4 66  JPEG LOSSLESS HIER 14 SYNTAX ASSOC PARMS This value defines the UID for JPEG  Lossless  Hierarchical  First Order  Prediction  Process 14  Selection  Value 1  transfer syntax   DEFAULT  1 2 840 10008 1 2 4 70    JPEG 2000 LOSSLESS ONLY SYNTAX ASSOC PARMS This value defines the UID for JPEG  2000  Lossless   DEFAULT  1 2 840 10008 1 2 4 90  JPEG 2000 SYNTAX ASSOC PARMS This value defines the UID for JPEG  2000   DE
269. rom a remote AE whose  attributes match a specified set of attributes     C MOVE Move object instance s  from a remote AE whose attributes  match a specified set of attributes to yet another remote AE   or possibly your own AE   which would be another form of  retrieval     C FIND Match a set of attributes to the attributes of a set of object  instances on a remote AE    C ECHO Verify end to end communications with a remote AE    N DELETE Request that a remote AE delete an existing object instance           3 commands are referred to as DIMSE Services in the DICOM Standard     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Where your application These DICOM commands can be thought of as primitives that every networking   takes over    service is built from  In the context of a particular Service  these primitive actions  translate to explicit real world activities on the part of an Application Entity   Hence  DICOM places requirements on an application implementing a DICOM  service  DICOM is careful to only express high level operational requirements   and leaves the creative detail and look and feel of the application entity to the  developer     Request vs  response For every command  there is both a request and a response  A command  request indicates that a command should be performed and is usually sent to an  SCP  A command response indicates whether a command completed or its state  of completion and is usually returned to an SCU  Example re
270. ructure     M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Fiealthcare    NET C  User   s Manual    Part 11 specifies Media Storage Application Profiles that standardizes a number  of choices related to a specific clinical need  modality or application   This  includes the specification of a specific physical medium and media format  e g    CD ROM  3 5  high density floppy        as well as the types of information   objects  that can be stored within the DICOM File Set  Part 11 also includes  useful templates to provide guidance in authoring media application conformance  statements     Part 12 details the characteristics of various physical medium and media formats  that are referenced by the Media Storage Application Profiles of Part 11     While parts 11 and 12 of DICOM are expected to evolve along with the  introduction of new clinical procedures and the advancement of storage media  and file system technology  Part 10 should remain quite stable since it specifies  file formats independent of medical application or storage technology     Part 13 details a point to point protocol for doing print management services  This  part has been retired from the DICOM standard     Part 14 specifies a standardized display function for display of grayscale images     Part 15 specifies Security Profiles to which implementations may claim  conformance  Profiles are defined for secure network transfers and secure  media     Part 16 specifies the DICOM Content Mapping Resource 
271. rvation Context     148 M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Healthcare    NET C  User   s Manual    Structured Reporting Templates    Templates are patterns that specify the Concept Names  Requirements   Conditions  Value Types  Value Multiplicity  Value Set restrictions  Relationship  Types and other attributes of Content Items for a particular application  SR  Document templates are defined in the Part 16 of the DICOM Standard  Part 17  of the DICOM also has some explanatory information on encoding SR  Documents  The Merge DICOM Toolkit SR Functions follow DICOM Templates  structures and allow straightforward encoding based on template tables     SR Templates are described using tables of the form shown on Table 23     Table 23  SR Template Definition                                                                                              NL  Rel with VT  Concept VM   Req           Condition   Value Set  Parent Name Constraint  1  2  3  Row Number    Each row of a Template Table is denoted by a row number  The first row is  numbered 1 and subsequent rows are numbered in ascending order with  increments of 1  This number denotes a row for convenient description as well as  reference in conditions  The Row Number of a Content Item in a Template may  or may not be the same as the ordinal position of the corresponding node in the  encoded document  The Merge DICOM Toolkit does not use this number in any  Way     Nesting Level  NL     The nesting level o
272. rvice list can be used in  this case for both the client  SCU  and server  SCP   The following is an  example service list that configures DICOM asynchronous communication  negotiation      SCU Or  5     Service List                                   SERVICES SUPPORTED   1 4 Number of Services  MAX OPERATIONS INVOKED   10          OPERATIONS PERFORMED   10   SERVICE_1   STANDARD MR             In this case  the  SCU Or  SCP  Service List  supports the Standard MR  SOP Class  For all services  it supports 10 maximum operations invoked and 10  maximum operations performed  When MAX OPERATIONS INVOKED and   MAX OPERATIONS PERFORMED are not included in the service list   asynchronous communications are not negotiated  See a subsequent section for  details on implementing DICOM asynchronous communications with Merge  DICOM Toolkit                       Extended Negotiation    Merge DICOM optionally supports configuration of DICOM Extended Negotiation  information in service lists  Currently  the DICOM standard allows extended  negotiation information for the Storage and Query Retrieve Service classes as  defined in PS3 4 of the standard  The extended negotiation information can be  set for only the client  SCU   Server applications utilizing extended negotiation  must set this information at run time through the  NET Assembly      SCU Service List                                               SERVICES SUPPORTED   2 4 Number of Services  SERVICE 1   STUDY          QR FIND   EXT NEG
273. s  the  user is given the message read from the network encapsulated in an  MCdimseMessage object  The message object still contains a link to the  registered callback class  This link can be removed by calling the MCattributeSet  removeValues method for the registered attribute  The header data can then  be examined and later written to disk              When sending data over the network  the MCdimseService class  sendRequestMessage method  or the equivalent method from one of the  MCdimseService subclasses  will call the user s registered callback class for the  image data  The data can be supplied to Merge DICOM in any length as  required by the user s application  The data is typically read from disk at this  point and directly passed to Merge DICOM Toolkit  After  sendRequestMessage receives the data  it byte swaps the data if needed  and  then writes it to the network           This functionality is conducive to storing a message s header data separately  from its image data  Depending on system requirements  this may be an aid in  quickly loading image data while bypassing Merge DICOM Toolkit  The complete  image file can be reassembled later using Merge DICOM Toolkit     Saving Received Images Directly to Disk    In conjunction with the registered callback class  data can also be stored directly  to disk when it is being read  The image s header data can be written to disk from  within the registered callback  The user must write the attribute tag  value  representat
274. seMessage class   contain a command set object  MCcommandSet  and an MCdataSet object          DICOM media storage service deals with file objects  MCfile  that contains a set  of file meta information  MCfileMetalnfo class  and an MCdataSet object     MCdataSet objects are related to specifiC C   DICOM service command pairs   i e  SOP classes   Normally you construct new instances by providing the  service name that identifies the DICOM information object and the DIMSE  command that will be used with the information object  By providing the service  and command  Merge DICOM can retrieve all of the attributes used for the  service and pre populate the data set with those attributes   Of course  no  values are assigned to the attributes yet     that is your job         ushort command   MCdimseService C STORE          String serviceName    STANDARD CT      86 M RGE    Healthcare    Merge DICOM Toolkit           Performance Tuning    DataSet  CommandsSet  Metalnfo    MCattribute    M RGE    Fiealthcare    NET C  User   s Manual    MCdataSet ds   new MCdataSet  command  serviceName       The command can be any of the valid constant values defined in the  MCdimseService class   Please refer to the Assembly Windows Help File   The  service name must be one of the services defined in the Services Profile   normally mergecom srv  file  if not  a warning message will be logged     An MCillegalArumentException will be thrown if the command value is  invalid  An MCconfigurationError run
275. sets or gets that field from the command set attribute   0000 0902   Usually  the use of this attribute is optional     Certain DIMSE services provide for sending an application specific error code in  response messages  The ErrorId property sets or gets that value from the   0000 0903  attribute in the command set     Normalized DICOM service classes reference events that are identified by  application specific event IDs  The Event TypeId property sets or gets the  Event Type ID from the command set for attribute  0000 1002      The DIMSE services that use C GET or C MOVE operations place the number of  C STORE sub operations that failed in their response messages  The  FailedSubOperations property gets or sets that value from attribute   0000 1022      The DIMSE service provider  for example  Merge DICOM Toolkit  assigns a  number to each DIMSE request message  The MessageId property sets or gets  that identifying number from the command set attribute  0000 01 10      DIMSE response messages set an attribute in the command set that identifies  which request message is being responded to  The  MessageIdBeingRespondedTo property gets that value from attribute   0000 0120      The MessagePriority property gets or sets the DICOM  Message Priority  of  this DIMSE message  It is retrieved from attribute  0000 0700  in the message s  command set     DIMSE C MOVE request messages contain an attribute that provides the  destination DICOM Application Entity for which C STORE sub oper
276. sociated with a  particular operation in the request and response messages  The  RequestedSopClassUid property sets or gets this  Hequested SOP Class  UID  from attribute  0000 0003      Normalized DIMSE services provide the SOP Instance UID for which a given  operation occurred  The RequestedSopInstanceUid property sets or gets  this  Hequested SOP Instance UID  from attribute  0000 1001      The ResponseStatus property gets the Response Status Code  0000 0900   from the message command set     The DIMSE services that use C GET or C MOVE operations place the number of  C STORE sub operations that generated warnings in their response messages   The WarningSubOperations property sets or gets that value from attribute   0000  1023      Constructing File Objects    Before you can use the DICOM media storage services provided by the  MCmediaStorageService class  you must construct an MCfile object that will  encapsulate the DICOM file that will be read or written     As discussed above  each instance of the MCfile object contains an MCdataSet  object and an MCfileMetalnfo object  The MCfile may be constructed with a pre   populated data set or with an empty data set     Construct with a pre populated data set     Two forms of the MCfile constructor create a MCdataSet object and a  MCfileMetalnfo object that contain all of the attributes of a DICOM file that will be  used for the given serviceName and command  References to the created  attribute sets may be retrieved using the Da
277. sociation     DICOM defines an association negotiation protocol  see Figure 5  in which an  association requester application proposes a connection with an association  acceptor application  In the most common DICOM services  a client application  entity  SCU  proposes an association with a server AE  SCP   However  some  services define a mechanism where the client can be the SCP which opens an  association with the SCU  This is used when an SCP sends asynchronous event  reports to an SCU through the N EVENT REPORT command  This is done  when DICOM role negotiation is used during standard association negotiation   For the sake of simplicity  the remainder of this manual refers to the client as the  SCU and the server as the SCP     MCnegotiationInfo    MCproposedContext  MCproposedContextList  MCresultContext  MCsopClass    MCtransferSyntax    Ds ps a                                                     M RGE 17    Fiealthcare    Merge DICOM Toolkit                User s Manual    The association request proposal contains the set of services the client would  like to perform and the transfer syntaxes it understands  The server then  responds to the client with a subset of the services and transfer syntaxes  proposed by the client  If this subset is empty  the server has rejected the  association  If the subset is not empty  the server has accepted the association  and the agreed upon services may be performed     The client is responsible for releasing the association when it
278. ssages or file  objects  this parameter specifies if  private attributes encoded in an invalid  format should be ignored or parsed     DEFAULT  NO    When reading messages or file  objects  this parameter specifies if  private creator codes encoded with  invalid characters should be ignored or  parsed     DEFAULT  NO    When using an MCattributeContainer   to store large data such as pixel data    this option specifies the minimum size  of value for which the callback should   be used  This option was specifically   added so pixel data contained in icons  are not managed with a callback     DEFAULT  1    Configuration Parameter for   MC Standard Compressor  Value 0  through 255  0 is the highest quality   giving a quantization table of all 1 s  32  corresponds to the standard  quantization tables  For values  between 0 and 128  the standard  tables are scaled linearly  For values  between 128 and 255  the standard  tables are scaled non linearly and the  compression increases  and the  quality decreases  by a very large  amount     DEFAULT  32    Configuration Parameter for   MC Standard Compressor Value 0  through 255 The chrominance  compression factor is used to adjust  the default chrominance quantization  table values  When ChromFactor is 32   the default chrominance quantization  table values are used as is  A value of  255 corresponds to high compression   low quality     DEFAULT  32       199    Section    COMPRESSION_ALLOW_FRAGS MESSAGE_PARMS    COMPRESSION_WHEN_J2K_
279. such as folders  film boxes   directories  etc       Figure 15 shows a DICOM message containing a sequence of items running two  levels deep  Note that these nested sequences are contained within the same  Message Stream  Sequences of items can also be contained in a DICOM file   and we will see that they are contained in DICOMDIR s  An attribute whose  value is a sequence of items is simply an attribute that has a potentially large and  complex value  Fortunately  Merge DICOM Toolkit allows your application to  deal with sequences of items an item at a time and hierarchically  as pictured in  Figure 15  and takes care of the encoding of the sequence within the DICOM  message stream     SQ Attribute          Command Object Instance    222          0      DICOM Message    SQ Attribute             B 02 28010 E EISE TM mtt in    Item 1  Sequence of Ite    Item 1 Item 2 Item 1  Sequence of Items Sequence of Items         Command Attribute LI   Object Instance Attribute    Figure 15  A DICOM Message containing doubly nested sequences of items     123    Merge DICOM Toolkit               User s Manual    Encoding and decoding  attributes in an item    Encoding items ina  sequence    Each item in a sequence is handled as a special derived sub class of the  MCattributeSet class  called MCitem  All the MCattributeSet methods are  inherited by the MCitem class     Similar to the constructors for MCdataSet objects  there are two variations of the  MCitem constructor  You can create an  
280. t  the indexer will throw an  MCnoSuchValueException     Note        MCdimseMessage dm     non null referenc   MCattributeSet as   dm getDataSet       try     Cdate value    MCdate as MCdicom   INSTANCE_CREATION_DATE  0       catch  MCnoAttributesException e  1     catch  MCattributeNotFoundException e  1     catch  MCincompatibleValueException e  1     catch  MCnoSuchValueException e                                           The MCattribute class contains a number of routines that can do explicit  conversion from the internal encoding for VRs into other data types  These  MCattribute methods are getIntValue  getStringValue  getUIntValue   and getDoubleValue  These routines will convert the internal Merge DICOM  representation into the types specified in the routine name  See the Assembly  Windows Help File for further details on these methods     Using a Callback Class to Retrieve an Attribute s Value    You shall use the IsBulk attribute s property to identify if the value is bulk  To  retrive the bulk value you must use the readBulkData method or the  readNextFrame method of MCattribute   In most of the cases it is a value  representation of OB or OW or OF  e g   Pixel Data   Pixel Data tends to be very  large and normally you use this method to read the data value a  chunk  or block  atatime  This method is the complement to the setvalue method described  previously     You must construct a callback class that implements the MCdataSink interface  and then call readBulkDat
281. t and capable DICOM application  see  Figure 3   Following is a description of the library s structure and the external  components it uses at runtime to provide DICOM functionality     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    M RGE    Healthcare      other sample applications    J          Media App         A Q R App  Sample Store App  om    DICOM Application EX          Message Info  Database and  Data Dictionary              Contig INI Merge DICOM Toolkit   MERGECOM PRO Advanced  NET Library     MERGECOM  APP binary  MERGECOM SRV files                s Key    optional     Merge  DICOM Database   Component  Maintenance    Tools and Manual    Your  Component                   Figure 3  Merge DICOM Toolkit Library Organization    Merge DICOM C C   Toolkit Dynamic Library    The Merge DICOM C C   Toolkit Dynamic Library  usually named  Mergecom Native dll for the Merge DICOM  NET C  Toolkit  contains the core  DICOM functionality required by the  NET toolkit  This library services many of  the methods of the         DICOM Toolkit     The Merge DICOM  NET C  Toolkit Assembly and the Merge DICOM C C    Toolkit run time library shipped with it  have been carefully designed to be re   entrant and have been validated to be thread safe  The Merge DICOM  Assembly automatically performs all DICOM network activity for each association  instance in its own thread     Merge DICOM Toolkit              ERES    Performance Tuning    The sample applications 
282. t to YES        175    Name Section Description    T3_MESSAGE MergeCOMS   This logging level parameter  informs the toolkit to log messages  relating to association negotiation    T4_MESSAGE MergeCOMSG   This logging level parameter  informs the toolkit to log messages  when incoming associations are  automatically rejected    T5 MESSAGE MergeCOMSG   This logging level parameter  informs the toolkit to log messages  relating to regular and extended  validation    T6 MESSAGE MergeCOMSG   This logging level parameter  informs the toolkit to log messages  relating to configuration     T7 MESSAGE MergeCOM3   This logging level parameter  informs the toolkit to log messages  relating to logging of command  level attributes in messages sent or  received    T8 MESSAGE MergeCOMSG   This logging level parameter  informs the toolkit to log messages  relating to the streaming in and out  of messages and file objects     T9 MESSAGE MergeCOMSG   This logging level parameter  informs the toolkit to log messages  relating to PDU s sent and  received  NOTE  Receipt and  transmission of P DATA PDU s are  logged  not the actual PDU itself     WARNING MESSAGE MergeCOMs3   This parameter informs the toolkit  to log warning messages        Application Profile    The application profile is a configuration file that is application dependent  The  application profile does not set specific parameters  It sets parameters related to  characteristics of your own application entity  A detailed descriptio
283. taInfo   myFile MetaInfo           Retrieve the attributes of the file meta info  foreach  MCattribute attr in metaInfo Attributes        Use MCtag toString method to list each tag  System Console Out WriteLine attr Tag ToString        127    Merge DICOM Toolkit      File Meta Information  Attribute Set    MCfileMetalnfo    Metalnfo  Preamble property    The Data Set  MCdataSet    DataSet  removeFileValues    Starting Over    removeFileValues    128    NET C  User s Manual    Accessing the File Preamble    The Preamble property is provided to access the preamble portion of the file  meta info  The property can be used to get or set the preamble  This property is  available in both the MCfile container class and the MCfileMetalnfo class     byte   preamble   myFile MetaInfo Preamble           The same could be accomplished as follows   byte   preamble   myFile Preamble        Working with the contained data set    The data set  MCdataSet  encapsulated in the MCfile class contains the DICOM  information object associated with the file  You can retrieve a reference to the  contained MCdataSet object with the DataSet property  Using that reference   you can call the methods it inherits from MCattributeSet        Get the data set attribute set  MCdataSet ds   myFile DataSet           Retrieve the attributes of the data set  foreach  MCattribute attr in ds Attributes        Use MCtag toString method to list each tag  System Console Out WriteLine attr Tag ToString           Resettin
284. taSet and Metalnfo properties   Normally you will only deal with the data set and the file meta information  attributes will be set automatically by Merge DICOM Toolkit     MCfile myFile   ushort command   MCdimseService C STORE               String serviceName    STANDARD CT     myFile   new MCfile command  serviceName      or    String file      MyFileName       myFile   new MCfile  file  command  serviceName       M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Remember    Service and command are  needed to validate the data  set    When you want   to save a network message  ina   DICOM media file    M RGE    Fiealthcare    serviceName and command are used to access configuration information that  describes the attributes of the message  If such configuration information is not  available  an empty file object is created  and a warning message is logged  An  exception is thrown if the command parameter is invalid  The file parameter  if  used  associates this object with a specific operating system file     Construct with an empty data set     Two forms of the constructor are used if the service and command are not yet  known  or if there is no need to validate that values will be set only for attributes  assigned to a given service command pair  It creates an empty MCdataSet  object  The MCfile object is not associated with any particular DICOM service or  command  If the validate   method is to be called  the setServiceCommand  method must be c
285. taSet ds  provided       It then sends the message to the network partner           dm    myService sendStoreRequest  ds  affectedSopClassUid      catch  Exception e              Note  The example above is just a sample of the methods available with the  MCstorageService class  Refer to the Assembly Windows Help File for  complete details on using that class     The MCassociation read method to retrieves the next message sent by the  network partner  The read method returns an instance of the  MCdimseMessage class  See the section Negotiated Transfer Syntaxes     Note that DICOM requires that one or more reply message be sent in response  to all DIMSE messages received  depending on the DICOM service being  performed     MCdimseMessage dm   try     long timeout   30000     30 second timeout   dm   assoc read timeout     if  dm    null       Timeout       The MCdimseMessage just sent is returned     catch  Exception e              The current implementation of read method does not support timeout values that  are less than one second  Any value that is less than 1000 and greater than zero  will be rounded to 1000  one second   Subsequently any value greater than 1000  is rounded to the nearest thousand  second      Releasing or Aborting the Association    The DICOM standard requires the association requester to release the  association when no further processing is required  This is done using the  release method of the MCassociation class     assoc release          M RGE    F
286. te  MCattribute    Figure 11  DIMSE messages and attribute sets    Association Message Handling    Once an association has been negotiated  the two cooperating applications  the  Service Class Provider  SCP  and the Service Class User  SCU   exchange  DICOM messages on the association network connection  These messages are  encapsulated in MCdimseMessage objects     Applications use instances of the MCdimseService class  or one of its sub   classes  to send request and reply messages  and use the read method of the  MCassociation class to retrieve the messages sent by the network partner     71    Merge DICOM Toolkit               User   s Manual    Send messages using one  of the MCdimseService  sub classes or the  MCdimseService class  itself    Read messages using  MCassociation read    For example  if an application is using the DICOM Storage Service  it would  construct an instance of the MCstorageService and then use its  sendStoreRequest method to send a request message and use  for example   its sendSuccessResponse method to reply to a received DIMSE message   When you construct a new MCdimseService class you provide the  MCassociation object that the service is to operate on        MCstorageService myService   new MCstorageService  assoc    MCdataSet ds   new MCdataSet C STORE RQ   STANDARD CR        encode the ds       String affectedSopClassUid    1 2 840 10008 5 1 4 1 1 1    MCdimseMessage dm   try        This call creates a new McdimseMessage       using the MCda
287. te 2  Byte 3 Byte 3  Byte 4 Byte 4 i   S    MSb Pixel5  LSb  Byte 5 MSb Pixel 5 LSb Byte 5 MSb Pixel 6 LSb          e e     e  Big Endian Machines Little Endian Machines    Figure 12  Sample Pixel Data Byte Stream for 8 bits Allocated  8 bits Stored   High bit of 7  VR   OW     The DICOM standard specifies that the first pixel byte should be set to the  east  significant byte of the OW value  The next pixel byte should be set to the most  significant byte of the OW value  This implies that on big endian machines  8 bit  pixel data is byte swapped from the OB encoding method  Note that  NET and  Windows is in Little Endian format     99    Merge DICOM Toolkit                User s Manual    Encapsulated Pixel Data    Handling Compressed Merge DICOM Toolkit supports the DICOM encapsulated transfer syntaxes  The   Data method for compression and decompression  JPEG  RLE  etc   of encapsulated  pixel data is specified in part 5 of the DICOM standard  Merge DICOM also  supports compression and decompression for several specific transfer syntaxes   The methods for this are discussed in subsequent section  Besides this support   the MCattribute class also has several methods for dealing with encapsulated  transfer syntaxes     There are several classes that can be used for compressing or decompressing  data  See  Compression and decompression    section for further details     Encapsulated pixel data is dealt with in a similar manner as standard pixel data   MCdataSink and MCdataSou
288. tent Items are identified by their position in the Content Item tree  They have  an implicit order as defined by the order of the Sequence Items  When a Content  Item is the target of a by reference relationship  its position is specified as the  Referenced Content Item Identifier in the source Content Item  Figure 20  illustrates an SR content tree and identifiers associated with each Content Item   The MCitemldentifer class encapsulates the Content Item Identifer     147    Merge DICOM Toolkit                User s Manual        Content Item ID    01       Content Item ID    01 02    Content Item ID    01 01    Content Item ID   Content Item ID    01 01 01 01 01 02    Figure 20  SH Item Identifier       Observation Context    Observation Context describes who or what is performing the interpretation   whether the examination of evidence is direct or quoted  what procedure  generated the evidence that is being interpreted  and who or what is the subject  of the evidence that is being interpreted     Initial Observation Context is defined outside the SR Document Content tree by  other modules in the SR IOD  i e   Patient Module  Specimen Identification   General Study  Patient Study  SR Document Series  Frame of Reference   Synchronization  General Equipment and SR Document General modules    Observation Context defined by attributes in these modules applies to all Content  Items in the SR Document Content tree and need not be explicitly coded in the  tree  The initial Observ
289. tes  Later  a DICOM workstation decided to retrieve the images  from the    archive    or PACS system  The workstation does not yet support UN  VR  however  the PACS or    archive    system does  The workstation uses the  DICOM query retrieve service class to retrieve the series of images  When the  images are exported to the workstation with an explicit VR transfer syntax  the  workstation fails to parse the first image received when it encounters the first UN  VR attribute  and the association is automatically aborted by the workstation     We have added several methods to solve this interoperability problem through  the Merge DICOM toolkit   s configuration files  For SCU systems that are  exporting UN VR tags to systems that cannot handle them  the following can be  done     Configure the SCU to only use the Implicit VR Little Endian transfer syntax when  exporting objects  This can be done through the use of transfer syntax lists  within the mergecom  app file or through commenting out the UID definitions for  the other transfer syntaxes within the mergecom pro file     Set the UNKNOWN_VR_CODE configuration option in the mergecom pro file to     OB     This forces unknown VR attributes to be encoded as OB instead of as UN   All implementations can handle OB encoding  There are several drawbacks to  this option  If the attributes are encoded as OB  it is harder for these attributes to  be converted back to their normal VR  Secondly  this option changes all  instances of t
290. that Affected SOP instance  UID is present  specify YES     DEFAULT  YES    The number of seconds to use as a  time out waiting for an association  request or waiting for the peer to shut  down an association     DEFAULT  30    The number of seconds to wait for a  reply to an associate request     DEFAULT  15     The number of seconds to wait for a  network connect to be accepted     DEFAULT  15     The number of seconds to wait in  between packets of data received over  the network after the initial packet of  data in a message is received  Used  by the read method     DEFAULT  15     Set to NO  if odd length UIDs in PDU   s  should NOT be padded with a NULL to  insure even length unique Ids  Set to  YES to insure even UIDs in PDUs     DEFAULT  NO    The number of seconds to wait for a  reply to an associate release     DEFAULT  15        197    Name    WRITE_TIMEOUT    DICOMDIR_STREAM_STORAGE    EXPORT PRIVATE ATTRIBUTES TO  MEDIA    EXPORT UN VR TO MEDIA    EXPORT GROUP LENGTHS TO MEDIA    EXPORT UNDEFINED LENGTH SQ IN    _DICOMDIR    ALLOW_COMMA_IN_DS_FL_FD_STRINGS    198    Section    DUL_PARMS    MEDIA_PARMS    MEDIA_PARMS  MEDIA_PARMS    MEDIA_PARMS  MEDIA_PARMS    MESSAGE_PARMS    Description    The number of seconds to wait for a  network write to be accepted     DEFAULT  15     When set to yes  DICOMDIRs read in  leave their directory records internally  in  stream  format  and are not parsed  until the directory record is  referenced  This can greatly reduce  memor
291. that can be  written to media    M RGE    Healthcare    C  User   s Manual    information contain the DICOM prefix  which is always    DICM    in a DICOM file  and can be used as an identifying characteristic for all DICOM files  The  remainder of the file  preamble and object instance  is encoded using tagged  attributes  as         DICOM Message      The object instances that can be stored within the DICOM file are equivalent to a  subset of the object instances that can be transmitted in network messages  The  services that can be performed to interchangeable media are italicized in Table 1   The Media Storage Service Class  in Part 4 of the DICOM standard  specifies  which service command pairs can be performed to media  Remember it is the  service command pair that identifies the object instance portion of the message     and it is only the object instance portion of the message that is stored ina  DICOM file  The command attributes associated with a network message are    never stored in a DICOM File  only the data set     The service command pairs whose corresponding object instances can be stored  to media are summarized in Table 5  Note that the Media Storage Directory  Service is not performed over a network and the single object specified in the  Basic Directory Information Object Definition  Part 3  is used     Table 5  Service Command Pairs Specifying Objects that can be Stored in a DICOM File    Service Command  Basic Structured Display Storage C STORE  Basic Te
292. the Remote Application Title of the server  you wish to connect to  but you must also provide an instance of your  MCrequester class     class MyAssocHandler   MCrequester    void start  MCassociation assoc              MyAssocHandler myHandler   new MyAssocHandler     MCremoteApplication remoteApp    MCremoteApplication getObject  ACME Query SCP          MCassociation myAssoc           myAssoc   myAE requestAssociation  ACME Query SCP    remoteApp  myHandler      If the requestAssociation call returns without throwing an exception the new  thread has been started and your myHandler instance is called to process the  association        M RGE    Healthcare    65    Merge DICOM Toolkit                User s Manual    DEFAULT  is to proposed the services  defined in mergecom app    Association startup  for a server application    MCacceptor  MCassociation    NOTE  the widely known  DICOM listen port is 104    66    Note that in the last two examples we only specified the Application Entity Title of  the remote server       this case the Library retrieves three important pieces of  information from the information in the Application Profile  mergecom app  file     The list of services to be proposed is obtained from your application   s entry in the  Application Profile     The name of the host the remote server is running on is obtained from the  remote application entity   s entry in the Application Profile     The TCP IP port number the remote server is listening on is obtaine
293. the dataset    5    Adding Patient Study Series and other attributes required by the IOD  definition     6  Saving the result dataset object to a file     To create a new SR  you need to know the IOD type you are creating and the  templates that will be used to generate the SR Document Content     M RGE    Healthcare    Merge DICOM Toolkit                User s Manual    Key Object Selection Example    The Key Object Selection document is constrained by a single template  The  following template is taken from the DICOM Part 16                 TID 2010  KEY OBJECT SELECTION  Type  Non Extensible  NL Rel with Parent VT Concept Name VM Req  Condition Value Set  Typ Constraint  e  1 CONTAI  DCID 7010  Key Object  1 M Root node  NER Selection Document  Titles  2   gt   HAS CONCEPT MOD  CODE   EV  113011  DOM  1 n  0   Document Title  Modifier    3      HAS CONCEPT MOD CODE   EV  113011  DCM  1 UC      Row 1 Concept  DCID   Document Title Name    113001   7011   Modifier   DOM   Rejected for    Quality Reasons    or  113010  DCM    Quality Issue            4      HAS CONCEPT MOD  CODE  EV  113011  DCM  1 MC       Row 1 Concept  DCID   Document Title Name    113013   7012   Modifier   DOM   Best In  Set    5   gt   HAS CONCEPT MOD INCLUD  DTID 1204  Language of  1 U  E Content Item and  Descendants       6     HAS OBS CONTEXT  INCLUD  DTID 1002  Observer 1     0          E Context  7      CONTAINS TEXT   EV 113012  DCM   Key 1 U  Object Description    8     CONTAINS IMAGE Purpose of
294. the maximum  number of open listen channels  It   s  value is used as the second argument  of a TCP listen   call     DEFAULT  5    This parameter specifies if the Nagle  Algorithm should be used when  sending packets at the TCP IP level   Most operating systems enable this by  default  It allows small segments of  data to delay sending a fixed amount  of time to possibly be combined with  other small segments and be sent as  one larger packet  Disabling this may  cause high network traffic     This parameter specifies the TCP IP  port on which server applications are  to listen for associate requests     DEFAULT  104    This parameter specifies the TCP IP  receive buffer size for each  connection  For optimum  performance  this value should be set  slightly higher than the value for  PDU_MAXIMUM_LENGTH     DEFAULT  29K    MAXIMUM  Operating System  dependent       M RGE    Healthcare    Section Description    TCPIP SEND BUFFER SIZE   TRANSPORT         5   This parameter specifies the TCP IP  send buffer size for each connection   For optimum performance  this value  should be set slightly higher than the  value for PDU MAXIMUM LENGTH     DEFAULT  29K    MAXIMUM  Operating System  dependent    TRANSPORT  PARMS   Sets the prefered IP type for network  communications  When set to IPV4   only IPV4 connections are allowed   When set to IPV6  only IPV6 connects  are allowed  When set to AVAILABLE   Merge DICOM will use IPV4 or IPV6 if  it is enabled in the operating system     DEF
295. time error will be thrown if the library  cannot access the configuration files        common programming technique is to construct an empty MCdataSet object  that initially contains no attributes     MCdataSet ds   new MCdataSet       empty data set    In this case  the message info and data dictionary files are not accessed when  the MCdataSet object is constructed  The MCdataSet object contains no  attributes and the setServiceCommand method must be called to set the  service and command for this data set before it can be used in a message sent  over the network  Since this approach avoids accessing the message info files  it  is more efficient  However  this approach also penalizes you in terms of runtime  error checking     Retrieving Contained Attribute Sets    When your application needs to build or parse the attributes contained in  MCdimseMessage objects  it accesses the contained MCcommandSet or  MCdataSet objects  using the MCattributeSet methods inherited by those  classes  Similarly  When your application needs to build or parse the attributes  contained in MCfile objects  it accesses the contained MCfileMetalnfo or  MCdataSet objects  using the MCattributeSet methods inherited by those  classes  Both MCdimseMessage and MCfile classes provide DataSet properties  to retrieve the contained data set object  The MCdimseMessage provides a  CommandSet property to retrieve the contained command set and the MCfile  class provides a Metalnfo property to retrieve the conta
296. tion objects can be                                 59  The Application Entity  AE  Title    59  Association Management  Network Only     60  Preparing a Proposed Context List                       sse 60  Using a Pre configured Proposed Context                                                    60  Creating Your Own Proposed Context List    60  Using a Pre configured Transfer Syntax                                                      60  Creating Your Own Transfer Syntax List    61  Creating Your Own Proposed Context                                                           61  MCproposedContext properties    eee 61  MCproposedContextList properties                         sese 62  MCresultContext                                     63  MCtransferSyntax properties                                   63  MCtransferSyntaxList properties                       64  Using Extended Negotiation                                     64  Starting an Association                                    65    M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Fiealthcare    NET C     User   s Manual    Starting an Association                                                    66  Accepting or Rejecting the                                                                          67  Negotiated Transfer                                             69  Merge DICOM Message                              71  Association Message                                   71  Releasing or Aborting the       
297. tionClassUid property  returns the Implementation Class UID of the local application and the  LocalImplementationVersion property returns the Implementation Version  of the local application  The RemoteImplementationClassUid property  returns the Implementation Class UID of the remote application and the  RemoteImplementationVersion property returns the Implementation Version  of the remote application     Maximum PDU Sizes    During association negotiation Merge DICOM and the remote DICOM system  exchanged the maximum size of Protocol Data Units that each is willing to  receive  Each system commits to send TCP IP data no larger than that  negotiated for the receiver  The LocalMaxPDUsize property returns the size of  the largest PDU that the local system is willing to receive  The  RemoteMaxPDUsize property returns the size of the largest PDU that the  remote system is willing to receive     The Proposed Context List    When an MCassociation object is constructed  an MCproposedContextList object  is usually provided to define the services that the local application is willing to  perform  If no MCproposedContextList was provided  Merge DICOM created an  MCproposedContextList from information defined in the mergecom app file  The  ProposedContextList property returns a reference to the  MOproposedContextList object used     During association negotiation the DICOM association requestor proposes the  Services it wishes to use  The association acceptor can then reject or accept 
298. torage   Results Management  Patient Management  Results Management   Study Management   Patient Management   Media Storage   Storage   Storage   Storage   Storage   Storage   Storage   Storage   Storage   Study Management   Study Management    Basic Worklist Management    Storage       179    180    Merge DICOM Service Parameter    GENERAL RPI QUERY    GENERIC  IMPLANT TEMPLATE  GENERIC  IMPLANT TEMPLATE FIND  GENERIC IMPLANT TEMPLATE GET  GENERIC IMPLANT TEMPLATE MOVE  HANGING PROTOCOL                   PROTOCOL FIND    HANGING PROTOCOL GET    HANGING PROTOCOL MOVE    IMAGE OVERLAY BOX RETIRED  IMPLANT ASSEMBLY TEMPLATE    IMPLANT ASSEMBLY TEMPLATE FIND    IMPLANT ASSEMBLY TEMPLATE GET    IMPLANT ASSEMBLY TEMPLATE MOVE    IMPLANT TEMPLATE GROUP    IMPLANT TEMPLATE GROUP FIND    IMPLANT TEMPLATE GROUP GET    IMPLANT TEMPLATE GROUP MOVE    IMPLANTATION PLAN SR  DOCUMENT    INSTANCE AVAIL NOTIFICATION    INTRAOCULAR LENS CALCULATIONS  KERATOMETRY MEASUREMENTS    KEY OBJECT SELECTION DOC    DICOM Service Class    Relevant Patient Information  Query    Storage   Query Retrieve  Query Retrieve  Query Retrieve   Hanging Protocol Storage    Hanging Protocol  Query Retrieve    Hanging Protocol  Query Retrieve    Hanging Protocol  Query Retrieve    Print Management  Storage    Implant Template  Query Retrieve    Implant Template  Query Retrieve    Implant Template  Query Retrieve    Storage    Implant Template  Query Retrieve    Implant Template  Query Retrieve    Implant Template  Q
299. tribSet   Ctag tag  bool isFirst       public void receiveDataLength MCattributeSet attribSet   Ctag tag  uint dataLength          public void receiveData MCattributeSet attribSet  MCtag  tag  MCdata data  bool isFirst          public void receiveMediaDataLength  MCattributeSet  attribSet  MCtag tag  uint dataLength  uint  dataOffset       Writing the provideDataLength method    The provideDataLength method is called by the library to request the data length  of the attribute identified by the tag parameter  The attribute set containing the  attribute is identified by the attribSet parameter  The library will call this  method before it begins calling the provideData method     This method is required to return the length of the attribute s value  The returned  data length must be an even number  The hex value Oxffffffff  which means  undefined length in DICOM  may be returned if the attribute contains  encapsulated data     If the method cannot comply with the request  it must throw an  MCcallbackCannotComplyException  If the exception is thrown  Merge  DICOM will make no further calls for this instance of the attribute     public uint provideDataLength MCattributeSet attribSet   MCtag tag      uint length      If unable to get the attribute value s length  throw new MCcallbackCannotComplyException        Set length to the number of bytes contained     in the attribute s value   return length           M RGE    Fiealthcare    119    Merge DICOM Toolkit               User s M
300. tribution  The following is a list of currently    supported services     Table 31  Application profile parameters    Merge DICOM Service Parameter    ARTERIAL_PULSE_WAVEFORM  AUTOREFRACTION_MEASUREMENTS  BASIC_ANNOTATION_BOX  BASIC_COLOR_IMAGE_BOX  BASIC_FILM_BOX  BASIC_FILM_SESSION  BASIC_GRAYSCALE_IMAGE_BOX  BASIC_PRINT_IMAGE_OVERLAY_BOX  BASIC_STRUCTURED_DISPLAY    BREAST_IMAGING_RPI_QUERY    BREAST_TOMO_IMAGE_STORAGE    CARDIAC RPI QUERY    CHEST CAD SR    DICOM Service Class    Relevant Patient Information  Query    Relevant Patient Information  Query    Storage       M RGE    Healthcare    M RGE    Fiealthcare    Merge DICOM Service Parameter  COLON_CAD_SR  COLOR_PALETTE_FIND  COLOR_PALETTE_GET  COLOR_PALETTE_MOVE  COLOR_PALETTE_STORAGE  COMPOSITE_INST_RET_NO_BULK_GET  COMPOSITE_INSTANCE_ROOT_RET_GET  COMPOSITE_INSTANCE_ROOT_RET_MOVE  DEFORMABLE_SPATIAL_REGISTRATION  DETACHED_INTERP_MANAGEMENT  DETACHED_PATIENT_MANAGEMENT  DETACHED RESULTS MANAGEMENT  DETACHED STUDY MANAGEMENT  DETACHED VISIT MANAGEMENT  DICOMDIR   ENCAPSULATED CDA  ENHANCED CT IMAGE  ENHANCED MR COLOR IMAGE  ENHANCED MR IMAGE  ENHANCED PET IMAGE  ENHANCED US VOLUME  ENHANCED XA IMAGE  ENHANCED XRF IMAGE   G P PERFORMED PROCEDURE STEP  G P SCHEDULED PROCEDURE STEP  G P WORKLIST    GENERAL AUDIO WAVEFORM    er s Manual    DICOM Service Class  Color Palette Query Retrieve  Color Palette Query Retrieve  Color Palette Query Retrieve  Color Palette Storage  Query Retrieve  Query Retrieve  Query Retrieve   S
301. ts     Figure 8 shows a graphical representation of a DICOMDIR file and its central role  within a DICOM File Set     M RGE    Healthcare    Merge DICOM Toolkit               User   s Manual       DICOMDIR       File DICOM File Set    DICOM Image Files       Figure 8  A DICOM Directory File  DICOMDIR  within a DICOM File Set    The DICOMDIR hierarchy lf the DICOMDIR file contains directory information  it is composed of a hierarchy  of directory records  with the top most directory record being the root directory  record  A Directory Record identifies a DICOM File by summarizing key  attributes and their values in the file and specifying the file ID of the  corresponding file  The file ID can then be used  in the context of the native file  system  to access the corresponding DICOM file  Each directory record can in  turn point down the hierarchy to one or more related directory records     Part 3 of the DICOM Standard specifies the allowed relationships between  directory records in the section defining the Basic Directory IOD  We reproduce  this table here  see Table 6  for pedagogical reasons  but  you should refer to the  DICOM Standard for the most up to date and accurate specification     M RGE 29    Fiealthcare         User s Manual    Table 6  Allowed Directory Entity    Directory Record Type Record Types which may be included in the next  lower level Directory Entity     Root Directory Entity    PATIENT  TOPIC  PRINT QUEUE  HANGING  PROTOCOL  PRIVATE   PATIENT STUDY 
302. twork  This message stream is an encoded  stream of bytes that follows all the rules of DICOM     Merge DICOM Toolkit also supplies methods to generate and read DICOM  message streams directly  see Figure 13   The methods are available in the  MCdimseMessage class and the MCattributeSet class         streamOut  method creates a message stream from the contents of an MCdimseMessage  object  while the streamIn method populates an MCdimseMessage object from  a message stream  Also  streamLength method is supplied to calculate the  length of the DICOM stream that would result from using the streamOut call     111    Merge DICOM Toolkit               User s Manual     The streamLength method is also provided in the MCfile class to return the  actual length of the streamed file object  And the streamIn  streamOut and  streamLength methods are also provided by the MCattributeSet class  so any  attribute set may be used to create a stream      The                  methods return the byte offset from the beginning of the stream to  the next attribute after the stop tag parameter     DICOM  Message Stream    MCdimseMessage  or MCattributeSet    Object          Figure 13  Relationship between an Attribute Set Object and a Message Stream  Creating    a message stream AstreamOut call could look like the following    MCstreamOutCallback class MyStreamHandler   MCdataSink     MCdata     receiveData method public void receiveData MCdata data  System Object    origin          Store the data d
303. uery Retrieve    Storage    Instance Availability  Notification    Storage    Storage    Storage       M RGE    Healthcare    M RGE    Healthcare    Merge DICOM Service Parameter  LENSOMETRY_MEASUREMENTS  MACULAR_GRID_THIICKNESS_VOLUME  MAMMOGRAPHY_CAD_SR   MEDIA CREATION MANAGEMENT  MODALITY WORKLIST  FIND   MR SPECTROSCOPY   OPHT VIS FIELD 5           PERIM MEAS  OPHTHALMIC AXIAL MEASUREMENTS  OPHTHALMIC TOMOGRAPHY IMAGE  OPM THICKNESS MAP  PATIENT ROOT QR FIND  PATIENT ROOT QR GET  PATIENT ROOT QR MOVE    PATIENT STUDY ONLY QR FIND       PATIENT  STUDY ONLY  QR  GET    PATIENT STUDY ONLY QR MOVE       PERFORMED PROCEDURE STEP  PERFORMED PROCEDURE STEP NOTIFY  PERFORMED PROCEDURE STEP RETR  PRESENTATION LUT   PRINT  JOB   PRINT QUEUE  MANAGEMENT   PRINTER   PRINTER CONFIGURATION  PROCEDURAL  EVENT  LOGGING    PROCEDURE LOG    PRODUCT CHARACTERISTICS QUERY    DICOM Service Class  Storage   Storage   Media Creation Management  Basic Worklist Management  Storage   Storage   Storage   Storage   Storage   Query Retrieve  Query Retrieve  Query Retrieve  Query Retrieve  Query Retrieve  Query Retrieve   Study Management  Study Management  Study Management   Print Management   Print Management   Print Management   Print Management   Print Management  Application Event Logging  Storage    Substance Administration  Query       181    182    Merge DICOM Service Parameter  PULL_PRINT_REQUEST  RAW_DATA    REAL_WORLD_VALUE_MAPPING       REFERENCED_IMAGE_BOX  RESPIRATORY_WAVEFORM  RT_BEAMS
304. uestMessage method  There are four forms of the MCdimseService sendRequestMessage method        public void sendRequestMessage  MCdimseMessage msg    public void sendRequestMessage  MCdimseMessage msg  String  affectedSopInstanceUID    public void sendRequestMessage  String metaServiceName   MCdimseMessage msg    public void sendRequestMessage  String metaServiceName   MCdimseMessage msg  String affectedSopInstanceUID                          At minimum  the sendRequestMessage call must provide a reference to an  MCdimseMessage object that encapsulates the message to be sent  the msg  parameter      Some DICOM SOP Classes require that you assign an Affected SOP Instance  UID to the composite message object being sent  in those cases  you must use  the affectedSopInstanceUID parameter  providing the UID     The metaServiceName parameter is also optional  If it is null or it if is an empty  string  it will be ignored  Some DICOM services  e g   the Basic Print Service   allow you to support multiple meta services  Each meta service consists of a set  of basiC C   DICOM services  In some cases a DICOM application may support  multiple meta services over the same association  When two of the meta  services include the same basic service  this metaServiceName parameter is  used to tell Merge DICOM which meta service to use when sending the  message     Using the sendResponseMessage method  There are two forms of the MCdimseService sendResponseMessage method              public voi
305. ute s value and the byte offset of the attribute s value from the beginning of  the media file        Note  The library calls this method instead of calling the receiveData method  when it is processing the MCmediaStorageService  readFileBypassLargeData call     If the method cannot comply with the request  it must throw an  MCcallbackCannotComplyException  If the exception is thrown  Merge  DICOM will make no further calls for this instance of the attribute     public void receiveMediaDataLength  MCattributeSet  attribSet  MCtag tag  uint dataLength   uint  dataOffset     if  anyProblemOccurs    throw new MCcallbackCannotComplyException        Perhaps save the dataOffset and dataLength     so they can be used later to access the data            Registering Your MCattributeContainer    Each Application Entity registers its own MCattributeContainer objects  The  MCapplication class registerAttributeContainer method is used to  register an MCattributeContainer object to be used with the Application Entity        MCapplication myApp     a non null referenc   MyContainer myContainer   new MyContainer      MCattributeContainer oldContainer    oldContainer   myApp registerAttributeContainer  new  MCtag MCdicom PIXEL DATA   myContainer          This call registers myContainer  an instance of the MyContainer class  which  must implement the MCattributeContainer interface   myContainer will handle  the pixel data  7FE0 0010  attribute for myApp  A single MCattributeContainer  object c
306. value can be any of the types shown in Table 11   String value    my value         myAttrSet setValue tagl  new MCdate  20051109      myAttrSet setValue tag2  new MCtime   081401     myAttrSet putValue tag3   PATIENT     myAttrSet setValue tag4   ushort 256         91    Merge DICOM Toolkit                User s Manual    Values are converted Merge DICOM will perform any reasonable conversion from the types listed in    to the proper   Table 11 to the form necessary to encode it in the Value Representation of the  Value Representation attribute  If a type conversion is not reasonable  e g   from short toLT   then    an MCincompatibleValueException will be thrown  An  MCinvalidEncodingWarning will be thrown if the value is invalid according to  the rules for the value representation  Note that this is just a warning     the value  is encoded     Note that each time the addValue method is called for an attribute  another value  is added to the attribute   s list of values     Using alternate A default string encoder is implemented that will convert between Unicode and   character sets many of the DICOM defined character sets  If you want to define a string  encoder or decoder that is different than the default implementation  you must  use the MC mcSetStringEncoder method to set your own string encoder and  decoder     To set values for attributes with value representations of OB  OW  OF use the  setValue call which includes MCdataSource as a parameter  The  MCdataSource class 
307. whether or  not network data should be captured in  files suitable to be read by the  MergeDPM utility  Use these  parameters to customize the network  capture     CAPTURE_FILE  CAPTURE_FILE_SIZE  NUMBER_OF_CAP_FILES  REWRITE_CAPTURE_FILES    DEFAULT  No    NUMBER_OF_CAP_FILES TRANSPORT_PARMS   This parameter specifies the number  of capture files to generate   Capture  files are generated if the  NETWORK_CAPTURE value is set to  Yes   Each capture file generated will  have maximum size specified by  CAPTURE_FILE_SIZE  If multiple  capture files is requested  the network  data of each association will be  captured in its own file  If  CAPTURE_FILE_SIZE is less than 1   unlimited size  this parameter s value  is ignored     DEFAULT  1       M RGE 207    Healthcare    REWRITE_CAPTURE_FILES    MAX_PENDING_CONNECTIONS    TCPIP_DISABLE_NAGLE    TCPIP_LISTEN_PORT    TCPIP RECEIVE BUFFER SIZE      208    Section    TRANSPORT_PARMS    TRANSPORT_PARMS    TRANSPORT_PARMS    TRANSPORT_PARMS    TRANSPORT_PARMS    Description    This parameter specifies the whether  or not capture files should be rewritten  when all files have reached the  maximum size specified by  CAPTURE_FILE_SIZE   Capture files  are generated if the  NETWORK_CAPTURE value is set to  Yes   If Yes is specified  the oldest  written file will be rewritten  If No is  specified and all requested files have  been written  see  NUMBER_OF_CAP_FILES   no more  data will be captured     DEFAULT  Yes    This parameter specifies 
308. work Interface    Merge DICOM Toolkit runs over the TCP IP protocol stack on any physical  interconnection media supporting the TCP IP stack           4 and IPv6 Support    Merge DICOM Toolkit supports both IPv4 and IPV6 protocols and is configurable  in the system profile     Configuration    Refer to the Appendix B  Configuration Parameters for complete configuration  information     Applications reference four  4  configuration files  The first  merge ini  is found  through the MERGE_INI environment variable  They are as follows     e merge ini     Specifies the names of the other three  3  configuration files and  also contains message logging parameters     e mergecom pro     Specifies run time parameters for the application     e mergecom app     Defines service lists and applications on other network  nodes to which connections are possible     e  mergecom srv     Service and sequence definitions     AE Title Presentation Address Mapping    Presentation address mapping is configured in the mergecom app file  The  Presentation Address of an SCU SCP application is specified by configuring the  Listen Port in the mergecom pro file  and specifying the AE title for the SCU SCP  within the application itself     Configurable Parameters    The mergecom pro configuration file can be used to set or modify other lower   level communication parameters  This includes time outs and other parameters   Some information about supported SOP classes is also stored here  Most  parameters
309. xclusive options     Note  For example  if one of rows 1  2  3 or 4 may be included  then for row 2   the abbreviation  XOR rows 1 3 4  is specified for the condition     e IF     Shall be present if the condition is TRUE  may be present otherwise                    If and only if  Shall be present if the condition is TRUE  shall not be  present otherwise     e CV     Code Value  e CSD     Coding Scheme Designator  e CM     Code Meaning    e CSV     Coding Scheme Version    Value Set Constraint    Value Set Constraints  if any  are specified in this field as defined or enumerated  coded entries  or as baseline or defined context groups     The Value Set Constraint column may specify a default value for the Content  Item if the Content Item is not present  either as a fixed value  or by reference to  another Content Item  or by reference to an Attribute from the dataset other than  within the Content Sequence  0040 A730      Inclusion of Templates    A Template may include another Template by specifying  INCLUDE  in the Value  Type field and the identifier of the included Template in the Concept Name field   All of the rows of the specified Template are in included in the invoking Template   effectively substituting the specified template for the row where the inclusion is  invoked  Whether or not the inclusion is user optional  mandatory or conditional is  specified in the Requirement and Condition fields  The number of times the  included Template may be repeated is specifie
310. xt Structured Reporting C STORE  Breast Tomosynthesis Image Storage C STORE  Comprehensive Structured Reporting C STORE  Computed Radiography Image Storage C STORE  CT Image Storage C STORE  Chest CAD SR C STORE  Colon CAD SR C STORE  Deformable Spatial Registration Storage C STORE  Digital X Ray Image Storage   For Presentation C STORE  Digital X Ray Image Storage   For Processing C STORE  Digital Intra oral X Ray Image Storage   For Presentation C STORE  Digital Intra oral X Ray Image Storage   For Processing C STORE  Digital Mammography Image Storage   For Presentation C STORE    Digital Mammography Image Storage   For Processing C STORE    Encapsulated CDA Storage C STORE       N        Service   Encapsulated PDF Storage   Enhanced CT Image Storage   Enhanced MR Image Storage   Enhanced MR Color Image Storage   Enhanced PET Image Storage   Enhanced US Volume Storage   Enhanced XA Image Storage   Enhanced XRF Image Storage   Enhanced Structured Reporting   Generic implant Template Storage   Grayscale Softcopy Presentation State Storage  Blending Softcopy Presentation State Storage  Color Softcopy Presentation State Storage  Pseudo Color Softcopy Presentation State Storage  Implant Assembly Template Storage   Implant Template Group Storage   Implantation Plan SR Document Storage  Intraocular Lens Calculations Storage    Intravascular Optical Coherence Tomography Image Storage      For Presentation    Intravascular Optical Coherence Tomography Image Storage      For Processi
311. y Initialization    Your first call to the Assembly should be the static mclnitialization method of the  MC class  Using the library without an explicit initialization results in automatic  initialization using the default configuration  The mclnitialization method  provides the location of the Initialization File  merge ini  and allows Merge  DICOM to perform essential startup tasks     File mergeIniFile   new File  Path to merge ini     try     MC mcInitialization  mergeIniFile      catch  MCalreadyInitializedException e               catch  MCinvalidLicenseInfoError e            catch  MCruntimeException e        DLL Not Found          The mclnitialization method allows the Toolkit to perform the following critical  processing     First  the Merge DICOM C C   toolkit dynamic link library  Mergecom Native dll  is loaded  The         CLR searches for the library using the platform   s normal  search path     If the library cannot be located  an MCruntimeException exception will be  thrown     After the dynamic library is loaded  the C toolkit is initialized  If an error occurs  during initialization  the MCnotInitializedError exception is returned  This  may include errors accessing the Merge DICOM Data Dictionary or Message info  files  This could happen if you have not specified or incorrectly specified the  DICTIONARY FILE OrMSG INFO FILE parameters in the System Profile   mergecom pro   When this exception is thrown  further information on the  reason for the exception m
312. y recommended     Application conformance statements are included in this section along with any  associated sequence of real world activities  For example  a Storage Service  Class SCP might perform the following real world activities  store an image   modify it in some defined manner  act as a Storage Service Class SCU and  forward the modified image somewhere     AE Specifications    The next section in the DICOM Conformance Statement is a set of Application  Entity specifications  There is one specification for the AE  Each individual AE  specification has a subsection  There are as many of these subsections as there  are different AE s in the implementation  That is  if there are two distinct AEs   then there are two subsections  The Merge DICOM Toolkit uses the  mergecom app configuration file to read configuration parameters for each AE   The following subsections are filled in for each AE     e Application Entity     SOP Classes     Association Policies    General    Number of Associations    Asynchronous Nature    Implementation Identifying Information  o Association Initiation Policy    Activity    Description and Sequencing of Activities    Proposed Presentation Contexts    SOP Specific Conformance for SOP Class es   o Association Acceptance Policy    Activity    Description and sequencing of Activities    Accepted Presentation Contexts    SOP Specific Conformance for SOP Class es           169    Merge DICOM Toolkit                User s Manual    SOP Classes    A
313. y usage when reading in large  DICOMDIRs when the entire  DICOMDIR is not referenced     Default  NO    When set to NO  disable the exporting  of private attributes in files written with  the writeFile and writeFileByCallback  methods     DEFAULT  YES    When set to NO  disable the exporting  of attributes with a VR of UN in files  written with the writeFile and  writeFileByCallback methods     DEFAULT  YES    When set to NO  do not write group  length attributes with MC_Write_File    and MC_Write_File_By_Callback      DEFAULT  NO    When set to NO  DICOMDIRs written  with MC_Write_File   are created with  their sequence attributes having  defined lengths  Setting this option to  Yes will increase performance     DEFAULT  YES    When set to Yes     comma or a period  will be allowed in String values passed  to appendValue  putValue or setValue  for attributes with a VR of DS  FL or  FD  When set to No  only a period will  be acceptable as a decimal separator   Note that the toolkit will always ensure  that DS attributes use a period decimal  separator when streaming to the  network or to a file  regardless of  current locale settings     DEFAULT  NO       M RGE    Healthcare    ALLOW_INVALID_PRIVATE_ATTRIBUTES    ALLOW_INVALID_PRIVATE_CREATOR  _CODES    CALLBACK_MIN_DATA_SIZE    COMPRESSION_LUM_FACTOR    COMPRESSION_CHROM_FACTOR    M RGE    Fiealthcare    Section    MESSAGE_PARMS  MESSAGE_PARMS    MESSAGE_PARMS    MESSAGE_PARMS  MESSAGE_PARMS    Description    When reading me
314. yFile g etNextValidationError     while  err    null       System Console Out WriteLine err ToString       rr   msg getNextValidationError                  To understand the overhead involved in file validation  please refer to The  Overhead of Validation on page 109     The MCfile stream    Merge DICOM concatenates the contents of the MCfileMetalnfo object and the  MCdataSet object when streaming the MCfile object  We will discuss later how  to use the MCmediaStorageService to read and write the DICOM file streams   You may need to know ahead of time how large the streamed file object will be  before writing the object to media  The stream s size can be obtained using the  streamLength method        uint length   myFile streamLength       Setting the file transfer syntax UID    You can use the TransferSyntax property to set the value of the DICOM   Transfer Syntax UID  associated with this file  It is sets attribute  0002 0010  in  the file s file meta information to the UID string you provide     myFile TransferSyntax    MCtransferSyntax ExplicitLittleEndian           Setting the file system file associated with the MCfile object    Whether or not you specify a file system file name when constructing the MCfile  object  you can set or get the name at any time using the FileName property     myFile FileName    FileName    String file   myFile FileName        129    Merge DICOM Toolkit      Listing the file    list    DICOM  File Service Classes    MCfileService  MCmediaStora
315. yntax being written may be different than the endian of the system being used   there may be a need for byte swapping of the pixel data in this implementation     There is a potential risk with this implementation  Although the data elements  after the pixel data in the current definition of the DICOM image types are not  widely used  future versions may add data elements that will get wider  acceptance among implementors     140 M RGE    Healthcare    Merge DICOM Toolkit      M RGE    Fiealthcare    NET C  User   s Manual    DICOM Structured Reporting    The Merge DICOM Toolkit provides high level functionality to handle DICOM  Structured Report  SR  Documents  This functionality provides a simple way for  encoding and decoding SR Document content by manipulating content items and  their attributes instead of tags and values     Structured Report Structure and Modules    The DICOM standard Part 3 defines the following generic types of SR  Information Object Definitions  IODs         Basic Text SR Information Object Definition     The Basic Text Structured  Report  SR  IOD is intended for the representation of reports with minimal  usage of coded entries  typically used in Document Title and headings  and a  hierarchical tree of headings under which may appear text and subheadings   Reference to SOP Instances  e g   images or waveforms or other SR  Documents  is restricted to appear at the level of the leaves of this primarily  textual tree  This structure simplifies the enco
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
  SÉRIE SD et SDX - Indelac Controls Inc  Operating Instructions  Manual de usuario- Sist em a Po s – vx670  Sanyo PDG-DXL2000 data projector  SHモンスターアーツ ファイヤーラドン 取扱説明書 315.3 KB  Dekupiersäge Scroll saw Scie de découpage  Développer l`Ilfochrome par Ilford  CRU DataPort 25 Frame    Copyright © All rights reserved. 
   Failed to retrieve file