Home

MergeCOM-3™ .NET/C# DICOM Toolkit User`s Manual V4.4.0

image

Contents

1. PORT_NUMBER 104 HOST_NAME acme_sunl SERVICE_LIST Storage_Service_List Storage_Service_List SERVICES_SUPPORTED 1 Number of Services SERVICE_1 STANDARD_CT In this case the client SCU would propose the CT Image Storage service ina 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 Number of Services SERVICE_1 STANDARD_CT SYNTAX_LIST_1 CT_Syntax_List_1l SERVICE_2 STANDARD_CT SYNTAX_LIST_2 CT_Syntax_List_2 CT_Syntax_List_1 SYNTAXES_ SUPPORTED 1 Number of Syntaxes SYNTAX_1 JPEG_BASELINE CT_Syntax_List_2 SYNTAXES_ SUPPORTED 1 Number of Syntaxes SYNTAX_1 IMPLICIT LITTLE ENDIAN Transfer Syntax Lists for SCPs A brief review MCdataElement MCtag MCattribute MCvr MCdimseMessage contains an MCcommandSet and optionally an MCdataSet SQ attributes have MCitem objects as values If a server SCP accepts both of these presentation contexts the client SCU must use the Transfer
2. 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 MergeCOM 3 DICOM Toolkit calls this encoded format a message stream and supplies powerful methods that allow your applications to work directly with message streams 109 Streaming methods streamOut streamIn streamLength MCstreamOffset Creating a message stream MCstreamOutCallback MCdata receiveData method 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 MergeCOM 3 internally creates a DICOM message stream that is passed over the network This message stream is an encoded stream of bytes that follows all the rules of DICOM MergeCOM 3 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 The 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
3. 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 vrOW Other Word String vrPN Person Name vrSH Short String vrSL Signed Long vrSQ Sequence of Items vrSS Signed Short vrST Short Text vrTM Time vrUl Unique Identifier vrUL Unsigned Long vrUN Unknown vrUS Unsigned Short vrUT Unlimited Text Several MergeCOM 3 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 The MCvr class provides some convenient methods The ToString method is overridden to return a 2 character string that represents this Value Representation For example using the MCvr field vrSQ vrSQ toString returns 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 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 cases these routines also allow the use of uint values to represent a DICOM tag 77 Non Private Tags Priva
4. Data Types Value Representations Returned MCdate DA MCdateTime DT MCtime TM MCage AS String AE DS IS UI CS LO LT SH ST UT MCpersonName PN float FL double FD uint UL AT int SL short SS ushort US MCdataSink OB OF OW UNKNOWN VP MCitem SQ Table 12 Valid value type parameters for the various Value Representations Note that if a value is retrieved which is not set the indexer will throw an MCnoSuchValueException MCdimseMessage dm non null referenc MCattributeSet as dm getDatasSet try MCdate value MCdate as MCdicom INSTANCE_CREATION_DATE 0 MCnoAttributesException e MCattributeNotFoundException e MCincompatibleValueException e MCnoSuchValueException e catch catch catch catch 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 Have MergeCOM 3 give a callback the value MCdataSink receiveData method methods are getIntValue getStringValue getUIntValue and getDoubleValue These routines will convert the internal MergeCOM 3 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 retriv
5. MCvalidationLevel In this example the application validates the MCdimseMessage object msg at the enum MCvalidationLevel Errors_Only level MCvalidationError MCva idationLeve Errors_And_Warnings could be used to report both firstError warnings and errors while MCvalidationLevel Ful1 could be used to report nextError errors warnings and informational messages If MCdimseMessage validate returns false your application can use the getNext ValidationError 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 e ValueNumber specifies which of the attribute s values was in error e ErrorDescription a String describing the error Example Output Example Log File e ErrorNumber a number identifying the error Refer to the MCvalidationError class in the Assembly Windows Help File for the error numbers that may be returned The ToSitring 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
6. MCattributeSet as non null reference uint length MyPDSupplyCallback cb new MyPDSupplyCallback cb file MypixelDataFile MCattribute attrib as MCdicom PIXEL_DATA attrib setValue cb length Performance Tuning MCfileDataSource MCstreamDataSource MCmemoryDataSink Retrieving values from an attribute set Indexers 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 the 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 MergeCOM 3 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 MergeCOM 3 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 ca
7. sssssssssenerensseretttnreneettttttn nn nrsttnntnn nn nnnn nenn 164 Transfer Syntax Selection Policies sseeeeeeeeeeeeereserreserrerrrrssrrrssrernn 164 Physical Network Interface 164 IPv4 and IPv6 Gupport nennen nnt 164 AE Title Presentation Address Mappimg 165 Configurable Parameter ccscccceceeececeeseececeeneececeeneeeeceeneneeeeeneeseeeenenees 165 RUE 165 Standard Extended Specialized Private GCObPs 165 Private Transfer Syntaxes cccccccceeeeeeeceecaeceeeeeeeeeccnaeeeeeeesessenaeaeeeeees 165 APPENDIX D CONFIGURATION PARAMETERS sasaaaeeenseeeeenrrenssesrrrrrenn 166 Initialization File 166 Lelleg Le In Bee 167 EIERE Hil edi Eed ean einen EA 167 Parameters gz eege ENEE 168 System Profile cc eeecee cence ee eeeeee ee enne ee ee eneee ee eaeee ee seeeeeseeeeesaeeeeesnieeeeeeaa 174 SENICE PrO estoniana ican aed tua a an auad an aea 191 APPENDIX E XML STRUCTURE 0 ccccecececceeceeeeeeeseceaeaeeeeeeesesesnaeeeeeeees 193 Base64 encoding of bulks and attributes with VR UN ssssssssssssssrsnssesssrrnens 193 Overview This User s Manual is targeted toward the developer of medical imaging applications using the MergeCOM 3 DICOM Toolkit to supply DICOM network or media functionality MergeCOM 3 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 of
8. 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 MergeCOM 3 toolkit is specified in the TRANSPORT_PARMS section The MAX_PENDING_CONNECTIONS setting 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 5 association requests arrive at once then only the first 5 will be accepted by TCP and passed to MergeCOM 3 the others would be refused at the TCP level 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 ARGE DATA STORE FILE MEM Default FILE ARGE_DATA_ SIZE 200 OBOW_BUFFER_SIZE 4096 DICTIONARY_FILE users mc3adv mrgcom3 dct EM
9. Saving SR Document contentent into the DataSet sr Write dataset Adding other root lvel attributes KE 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 tinke wili Drs M D dataSet setValue MCdicom REFERENCED_PERFORMED_PROCEDURE_STEP_SEQUENCE mull dataSet setValue MCdicom PATIENTS_NAME Jane Doo dataSet setValue MCdicom PATIENT_ID 234567 dataSet setValue MCdicom PATIENTS_BIRTH_DATE 19991109 dataSet setValue MCdicom PATIENTS_SEX F 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
10. 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 MergeCOM 3 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 7FE0 0010 as follows 95 Performance Tuning MCfileDataSink MCstreamDataSink MCmemoryDataSink Get a value s length MCattribute ValueLength Get a count of values MCattribute Count MCdataSet ds non null referenc MyPDStoreCallback cb new MyPDStoreCallback cb file MypixelDataFile try MCattribute attrib ds MCdicom PIXEL_DATA attrib readBulkData cb catch MCexception e 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 eg memory limitations In this case you would also want to set LARGE_DATA_STORE to the value FILE in the Service Profile so that MergeCOM 3 DICOM Toolkit will also maintain the pixel data value stored in the attribute set in a temporary file If your appli
11. 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 MergeCOM 3 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 structure 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 1
12. Tag 7FE00010 VR OW Name Pixel Data 4 Length 262144 gt 06 00 04 00 04 00 02 00 ute gt
13. 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 lt filename gt 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 the character 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 DICOM message c lt filename gt This option reads in a configuration file previously generated by mc3file The 51 service name and command for the message need not be specified on the command
14. 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 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 Standard Data Elements Non standard Data Elements MergeCOM 3 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 Constructing standard data elements Standard data elements are built using the following constructor MCdataElement de try MCtag tag new MCtag 0x0008 0x0010 de new MCdataElement tag catch MCnotStandardElementException e An MCnotStandardElementException 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
15. public class MyContainer MCattributeContainer public uint provideDataLength MCattributeSet attribSet MCtag tag MergeCOM 3 calls for the attribute s data length MergeCOM 3 calls for the attribute s data value public MCdata provideData MCattributeSet attribSet MCtag tag bool isFirst public void receiveDataLength MCattributeSet attribSet MCtag 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 MergeCOM 3 will make no further calls for this instance of the attribute public uint provideDataLength MCattributeSet attribSet MCt
16. Copyright 2011 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 trademarks of Merge Healthcare Incorporated MergeCOM 3 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 Merge Healthcare 6303 Airport Road Suite 500 Mississauga ON Canada L4V 1R8 Tel 1 905 364 8000 Fax 1 905 364 8100 Toll free in North America 1 800 724 5970 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 mc3support merge com COM 59 Rev 1 0 Contents SICH NR 2 OVERVIEW eege ee 8 The DICOM Standard 8 The MergeCOM 3 DICOM Toolkit er nnnenrrnseernnnetnnnsennnnnern nnne 11 Development Platform Requirements cccccceeseeeeceeeeeeeeeeeeeenaeeeeeereeteees 12 Assembly StruCture ss ecanaiaiininiiia r EEEEE EE ENEEEEEEEEEEEE 13 MergeCOM
17. JPEG Extended Process 2 amp 4 JPEG Lossless Non Hierarchical Process 14 JPEG 2000 JPEG 2000 Lossless Only MCrleDecompressor Decompressor RLE Table 14 MergeCOM 3 Supplied Compressor and Decompressors 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 MergeCOM 3 utilizes libraries from Pegasus Imaging to do compression and decompression The RLE transfer syntax is supported directly in MergeCOM 3 JPEG Baseline JPEG Extended Process 2 amp 4 and JPEG Lossless Non Hierarchical Process 14 can be compressed or decompressed at a maximum 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 MergeCOM 3 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
18. LOST_CONNECTION MCmaxOperationsExceededWarning MAX_OPERATIONS_EXCEEDED MCnegotiationAbortedException NEGOTIATION_ABORTED MCnetworkShutdownException NETWORK_SHUTDOWN MCnoAttributesException NO_ATTRIBUTES MCnoSuchRecordException NO_SUCH_RECORD MCnoSuchValueException NO_SUCH_VALUE MCnotFoundException NOT_FOUND MCnotIntiaiizedError NOT_INITIALIZED_EXCEPTION MCnotStandardElementException NOT_A_STANDARD_DATA_ELEMENT MCoperationNotAllowedException OPERATION_NOT_ALLOWED MCrequiredAttributeMissingException REQUIRED_ATTRIBUTE_MISSING MCtimeoutException TIMEOUT MCunacceptableServiceException UNNACCEPTABLE_SERVICE MCunknownHostNameException UNKNOWN_HOST Before anything else Table 9 exceptionNumber property for each MCexception class Library Initialization Your first call to the Assembly should be the static melnitialization method of the MC class Using the library without an explicit initialization results in automatic initialization using the default configuration The melnitialization method provides the location of the Initialization File merge ini and allows MergeCOM 3 to perform essential startup tasks File mergeIniFile new File Path to merge ini try MC mcInitialization mergeIniFile catch MCalreadyInitializedException e catch MCinvalidLicenseInfoError e catch MCrunt
19. Library Import In order to access the classes of the MergeCOM 3 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 MergeCOM 3 NET assembly using Mergecom using Mergecom Exceptions using Mergecom Gen using Mergecom Logging Library Constants The MCdicom interface is generated from the MergeCOM 3 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 MergeCOM 3 NET Assembly Help File The exceptions that each class may throw are documented there MergeCOM 3 methods throw exceptions derived from MCexception class that extend the System ApplicationException class A special group of exceptions is MCruntimeException derived exception 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 MergeCOM 3 log file if the severity level of the exception is enabled in the merge ini file Most
20. Service MCpatientManagement Service MCstudyManagement Service MCresultsManagement Service Service Class Basic Worklist Management Print Management Study Content Notification Patient Management Study Management Results Management Services 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 Referenced 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 Detached Patient Managemen Detached Visit Management Detached Patient Mgmt Meta Detached Study 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 Table 1 DICOM Services Classes and their Component Services Description mechanism based on a small number of key attributes Suppor
21. MCdimseService C_STORE_RQ String serviceName STANDARD_CT MCdataSet ds new MCdataSet command serviceName Performance Tuning DataSet CommandSet Metalnto MCattribute 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 runtime error will be thrown if the library cannot access the configuration files A 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 MCco
22. PN FL FD AT UL SL SS US MCpersonName PN Values are converted to the proper Value Representation Using alternate character sets Data Type May be used to set attributes with these VRs float FL FD UL AT DS IS double FD FL UL AT DS IS uint SL SS US UL AT IS int SL SS US UL AT IS short SL SS US UL AT IS ushort SL SS US UL AT IS byte OB OF OW UNKNOWN_VR MCdataSource OB OF OW UNKNOWN_VR MCitem SQ Table 10 Permissible data types per Value Representation of the attribute MCattributeSet myAttrSet non null referenc MCtag tagl new MCtag 0x00080020 MCtag tag2 new MCtag 0x00080030 MCtag tag3 new MCtag 0x00080052 MCtag tag4 new MCtag 0x00280010 the value can be any of the types shown in Table 10 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 MergeCOM 3 will perform any reasonable conversion from the types listed in Table 11 to the form necessary to encode it in the Value Representation of the 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 N
23. Presentation Context Table Abstract Syntax Transfer Syntax Extended UID List Negotiation Computed 1 2 840 10008 5 1 4 1 1 1 DICOM Implicit 1 2 840 10008 1 2 SCP None Radiography VR Little Endian Image Storage DICOM Explicit 1 2 840 10008 1 2 VR Little Endian 1 DICOM Explicit 1 2 840 10008 1 2 VR Big Endian 2 MergeCOM 3 DICOM Toolkit uses mergecom app configuration settings to specify presentation contexts shown above Table A 3 Example Presentation Context 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 MergeCOM 3 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 e The SCP prefers it s native byte ordering and will prefer explicit over implicit VR Network Interfaces Physical Network Interface MergeCOM 3 DICOM Toolkit runs over the TCP IP protocol stack on any physical interconnection media supporting the TCP IP stack IPv4 and IPv6 Support MergeCOM 3 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 informatio
24. Presentation DICOM Upper Layer Ee Protocol Part 8 Data Link amp Physical Application Parts 3 amp 4 i Network Figure 1 The DICOM Protocol Stack Where to get the DICOM Standard Special Note As a user of this toolkit you should have access to the DICOM Standard MergeCOM 3 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 typically 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 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 supplem
25. SQ LO LO NUNUNDN WWWWWWW WW WWW Gi Gi GA Ww LA Ww FA GA WwW LA While MergeCOM 3 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 MergeCOM 3 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 sp ecified value multiplicity That an attribute that has enumerated values does not have a value 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 de That a non private attribute is not included in the message that is not fined terms defined for that DICOM message service command pair 105 and what validation cannot As mentioned MergeCOM 3 DICOM Toolkit does not capture all standard do for you violations and the DICOM Standard itself should be considered
26. 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 Resetting 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 streami
27. When you call the MCassociation read method MergeCOM 3 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 MergeCOM 3 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 CommandsSet properties Normally you will only deal with the data set and the command set attributes will be set automatically by MergeCOM 3 MCdimseMessage dm uhort command MCdimseService C_STORE_RQ String serviceName STANDARD_CT Ki Peformance Tuning dm new MCdimseMessage command serviceName The 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 MergeCOM 3 what values must be placed in the MCcommandSet it constructs for you Exceptions will be thrown if either of the parameters in invalid Construct
28. 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 indicates 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 i gt 1 e g when i 1 there shall be an integer one occurrence of the Content Item in this position iG From i to j occurrences where i and j 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 M Mandatory Shall be present e MC 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 145 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 mu
29. goes with it s respective 187 PEGASUS_OPCODE_PATH MESSAGE_PARMS 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 REMOVE_PADDING_CHARS MESSAGE_PARMS When set to Yes MergeCOM 3 will 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 RETURN_COMMA_IN_DS_FL_FD_STRINGS MESSAGE_PARMS When set to Yes MergeCOM 3 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 TEMP_FILE_DIRECTORY MESSAGE_PARMS This parameter specifies the directory in which temporary files should be created This parameter is use
30. lt Attribute Procedure Step lt Item gt lt Attrib UID Length 23 lt Attrib nstance UID Length 44 gt 2 1 lt Item gt lt Attribute PCode PrivateC lt Attribute PCODE Length PCODE Length lt Attribute Encoding Base6 DS lt Attrib lt DataSet gt lt DcmFile gt Length 25 gt 1 2 0 encoding utf 8 gt Service STANDARD_SEC_CAPTURE Command C_STORE_RQ gt Tag 00020001 VR OB Name File Meta Information 2 gt 00 01 lt Attribute gt Tag 00020016 VR AE Name Source Application Entity 5 gt MERGE_STORE_SCP lt Attribute gt o gt ice STANDARD_SEC_CAPTURE Command C_STORE_RQ 1 2 840 10008 1 2 1 gt Tag 00080008 VR CS Name Image Type GINAL SECONDARY OTHER lt Attribute gt Tag 00080016 VR UI Name SOP Class UID 840 10008 5 1 4 1 1 7 lt Attribute gt Tag 00081111 VR SQ Name Referenced Performed Sequence Length 1 gt ute Tag 00081150 VR UI Name Referenced SOP Class gt 1 2 840 10008 3 1 2 3 3 lt Attribute gt ute Tag 00081155 VR UI Name Referenced SOP 6 840 1 113669 4 960070 844 1026926027 44 lt Attribute gt gt lt Attribute Tag 00090010 VR LO Name Private Creator Code ode Length 11 gt SAMPLE PCODE lt Attribute gt Tag 00091010 VR LO Name Private PCode SAMPLE 6 gt Valuel lt Attribute gt lt Attribute Tag 00091015 VR UN Name Private PCode SAMPLE 6 gt 20 20 20 20 20 30y lt Attribute gt
31. 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 reference MCdirRecord rootRec dir Root MCdirRecord curRec curRec rootRec getFirstChild while curRec null if curRec RecordName 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 newItemName For example if you wished to add a Study record newItemName would be a string containing DIR_STUDyY The method returns an MCdirRecord object encapsulating the n
32. 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 IMPLEMENTATION_CLASS_UID The Implementation Class UID is used to identify ina 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 MergeCOM 3 application Table 26 Configuration options to consider when deploying an application 153 What to do when all network partners are not aware of the UN VR SCU application strategy UN VR DICOM Supplement 14 Unknown
33. 142 Structured Reporting Templates nnn 143 Overview of the MergeCOM SR Classes ccceseceeeeeneeeeeeeteeeeeenueeeeeeaaes 147 Encoding SR Documents 148 Reading SR Documents assssessssissssrnesrsrnesrinnasnnnnestinnestinaaneinnasnananntaannannna 151 DEPLOYING APPLICATIONS AAA 152 MergeCOM 3 Required Files 2 0 00 eeccceeeeeneeeeeeeeeeeeeeeeeeeeeaeeeeesnaeeeeesnaeeeeeeaaes 152 Configuration Options cccnnaie ved tel eed aie eee 153 APPENDIX A FREQUENTLY ASKED QUESTIONS AA 156 APPENDIX B UNIQUE IDENTIFIERS UD 159 Summary of UID Composition eceeeeieeeeeeeeteeeeeeeteeeeeteeeeeetaeeeeseneeeeeeae 159 Obtaining SCHER gege edu edel 159 Obtaining a UID From ANS 160 APPENDIX C WRITING A DICOM CONFORMANCE STATEMENT 161 Conformance Statement Sections cccceeeeeeeeeeeeeeeeeeteteeeeetieeeeeeneeeeeees 161 Application Data FlOWs EE 161 Sequencing of Real World Activities cececcecceceeeeeeeeeeceeeeeeeeeeteesnaeees 162 AE Specifications ccccccccceceeceeceeeeeeeeeceneeeeeeeeesecseaeceeeeeeeseceecaeeeeeereeteeea 162 SOP Classes cece ee eeeeaeaeee ener ee sgeaeaeeeeeeeedsescaeeeeeeeeeeessanaeess 163 Number of ASSOCIAtIONS 20 00 22 cee ee eeeeee cece ee eeeeceneaeceeeeeeeeeceacaeeeeeeesetseninaeeeeeess 163 Asynchronous Nature cecceeeeeeeeeeeeeeneee ee eeneeeeeeaeeeeetieeeeetiieeeeesieeeeeeea 163 Implementation Identifying Intormatton 163 SOP Specific Conformance
34. 79 MergeCOM 3 attribute sets Messages and files Contain attribute sets MCdimseMessage Constructing a message to use with the MCdimseService base class String name My Private Data Element try MCtag tagl new MCtag 0x8014 0x0010 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 MCfileMetalnfo contains the attributes of a DICOM file s meta information Your applications deal with network messages in MergeCOM 3 using MCdimseMessage objects and DICOM files using MCfile objects 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
35. DICOM object between various transfer syntaxes and formats The utility 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 lt tag gt lt new value gt input_file DICOM SOP Instance message file output_file Output DICOM SOP Instance message fil E Specify transfer syntax for output_file where lt syntax gt il for implicit little Do a DICOM ping Display Message Contents 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 lt tag gt the tag that is to be changed in hex Ox lt new value gt the value for the tag in quotes W h Show these options Example mc3conv in img out dcm t el m 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
36. 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 Raw Data 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 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 Video Endoscopic Image Storage Video Microscopic Image Storage Video Photographic Image Storage Xray Angio Image Storage Xray Angio Bi plane Image Storage Xray Radio Fluoro Storage Enhanced XA Image Storage Enhanced XRF Image Storage Service Class Services Description Secondary Capture Image 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 Stand alone Overlay Storage Stand alone Curve Storage Stand alone Modality LUT Storage Stand alone VOI LUT Storage Basic Text Structured Reporting Comprehensive Structured Reporting Enhanced Structured Reporting Key Object Selection Document Chest CAD SR Storage Mam
37. MCconnectionFailedException ei catch MCnegotiationAbortedException ei catch MCunknownHostNameException ei catch Exception e Negotiated Transfer Syntaxes MergeCOM 3 DICOM Toolkit supports all currently approved standard and encapsulated 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 p
38. MergeCOM 3 system profile parameters MERGECOM_3_SERVICES MergeCOM3 File containing the MergeCOM 3 system service and message definitions NUM_HISTORICAL_LOG_FILES MergeCOM3 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 LXX where basename LXxX 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 set to YES T3_MESSAGE MergeCOM3 This logging level parameter informs the toolkit to log messages relating to association negotiation T4_MESSAGE MergeCOM3 This logging level parameter informs the toolkit to log messages when incoming associations are automatically rejected T5_MESSAGE MergeCOM3 This logging level parameter informs the toolkit to log messages relating to regular and extended validation T6_MESSAGE MergeCOM3 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 MergeCOM3 This logging level parameter informs the toolk
39. NET C DICOM Toolkit contains the core DICOM functionality required by the NET toolkit This library services many of the methods of the NET DICOM Toolkit The MergeCOM 3 NET C DICOM Toolkit Assembly and the MergeCOM 3 C C DICOM Toolkit run time library shipped with it have been carefully designed to be re entrant and have been validated to be thread safe The MergeCOM 3 Assembly automatically performs all DICOM network activity for each association instance in its own thread When a MergeCOM 3 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 MergeCOM 3 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 Typ
40. 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 the 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 e any extended negotiation information used when creating associations See the MC_Get_Negotiation_Info function in the MergeCOM 3 Reference Manual and and 163 e anyrules 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 section in the Appendix B Configuration Parameters Also see the MC_Get_Association_Info function in the MergeCOM 3 Reference Manual to learn about the presentation contexts that are queryable by an application program Refer to Table A 3 for an example
41. This value defines the UID for JPEG 2000 DEFAULT 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 JPEG_LS_LOSSLESS_SYNTAX JPEG_LS_LOSSY_SYNTAX 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 ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS Compression DEFAULT 1 2 840 10008 1 2 4 92 This value defines the UID for JPEG LS Lossless DEFAULT 1 2 840 10008 1 2 4 80 This value defines the UID for JPEG LS Lossy Near Lossless DEFAULT 1 2 840 10008 1 2 4 81 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 MergeCOM 3 implementation This value is used during association negotiation to specify the maximum sized PDUs that your application can receive DEFAULT 28K MINIMUM 4K MAXIMUM NO
42. 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 transfer 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 MergeCOM 3 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
43. 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 validate method is to be called MCdimseMessage dm MCdataSet ds A non null referenc dm new MCdimseMessage ds A 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 ar
44. also allow MergeCOM 3 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 MergeCOM 3 uses these routines to allocate buffers in sizes between 4 bytes and 28K When an allocation is requested MergeCOM 3 will take the smallest buffer that will fit the bytes requested These buffers will be kept in MergeCOM 3 s internal memory pool and never freed For allocations larger than 28K MergeCOM 3 will simply use the C functions malloc and free The end result of these routines is that applications using MergeCOM 3 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 MergeCOM 3 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 MergeCOM 3 the most memory intensive operation is dealing with image data The following sections discuss various MergeCOM 3 methods A description is given of how these methods manage memory in conjunction with various MergeCOM 3 configuration settings Assigning Pixel Data The MCattribute setValue method is used in conjunction with the MCdataSource interface to assign OB OW or OF data t
45. amp 5 transfer syntax DEFAULT 1 2 840 10008 1 2 4 52 JPEG_SPEC_NON_HIER_6_8 SYNTAX ASSOC_PARMS 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 JPEG_SPEC_NON_HIER_7_9 SYNTAX ASSOC_PARMS 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 JPEG_FULL_PROG_NON_HIER_10_12_SYNTA ASSOC_PARMS This value defines the UID for JPEG Full X Progression Non Hierarchical Process 10 amp 12 transfer syntax DEFAULT 1 2 840 10008 1 2 4 55 JPEG_FULL_PROG_NON_HIER_11_13_SYNTA ASSOC_PARMS This value defines the UID for JPEG Full X Progression Non Hierarchical Process 11 amp 13 transfer syntax DEFAULT 1 2 840 10008 1 2 4 56 JPEG_LOSSLESS_NON_HIER_14_SYNTAX ASSOC_PARMS This value defines the UID for JPEG Lossless Non Hierarchical Process 14 transfer syntax DEFAULT 1 2 840 10008 1 2 4 57 JPEG_LOSSLESS_NON_HIER_15_SYNTAX ASSOC_PARMS This value defines the UID for JPEG Lossless Non Hierarchical Process 15 transfer syntax DEFAULT 1 2 840 10008 1 2 4 58 PEG_EXTENDED_HIER_16_18_ SYNTAX ASSOC_PARMS This value defines the UID for JPEG Extended Hierarchical Process 16 amp 18 transfer syntax DEFAULT 1 2 840 10008 1 2 4 59 JPEG_EXTENDED_HIER_17_19_SYNTAX ASSOC_PARMS This value defines the UID for JPEG Extended Hierarchical Proce
46. an item 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 MergeCOM 3 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 eee UI IL DICOM Message SQ Attribute eee 8 a eee Item 1 Sequence of Ite Item 1 Item 2 Item 1 Sequence of Items Sequence of Items D Command Attribute Object Instance Attribute Figure 15 A DICOM Message containing doubly nested sequences of items 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 empty item attribute set by providing no parameter to the constructor If you wish to have the item populated by MergeCOM 3 with specific attributes you supply an itemName parameter used
47. 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 Replacing MergeCOM 3 s Memory Management Functions When using registerAttributeContainer to replace MergeCOM 3 s memory management functions the user would still use the MCattribute readBulkData and setValue methods to access the image When requested MergeCOM 3 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
48. 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 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 Attribute set report list method Attribute set to XML conversion writeToXML method 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 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 MCa
49. 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 null referenc int count myAttr Count MCvr vr myAttr ValueRepresentation int length myAttr ValueLength catch MCattributeNotFoundException ei catch MCincompatibleValueException e catch MCvrAlreadyValidException el Assigning Attribute Values from MCattribute Filling an attribute set Each DICOM attribute may have zero or more values assigned to it based on the with values via Value Multiplicity assigned to the attribute You have several methods available to MCattribute assign values to attributes in an MCattribute object setValue and addValue MCaittribute index addEncapsulatedValue Assigning Attribute Values from MCattributeSet Filling an attribute set The MCattributeSet class also has several convenience methods for assigning with values via values to specific attributes These routines ensure an attribute has been added MCattributeSet into the attribute set and then set or append the value There are setValue and addValue routines similar to the MCattribute class Difference between setValue addValue and indexer Do you want to The setValue methods first remo
50. class MCattributeContainer Server callbacks Client callbacks How to declare an MCaittributeContainer class Using Attribute Containers The MCaitributeContainer 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 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 repetitiv
51. 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 objects 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
52. command The command syntax follows mc3echo c count Ir remote_host l local_app_title p remote_port remote_app_title c count Integer number specifying the number of echoes to send to the remote host If c is not specified on cho 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 Fremote_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 mc31list 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 lt filename gt t lt syntax gt m filename Filename containing message to display 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 co
53. 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 MCproposedContext 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 represent the proposed contexts used in the proposed context list 63 getNegotiationInfo PresentationContextID ResultCode RoleNegotiated ServiceName TransferSyntax Name Uid BigEndian LittleEndian Encapsulated ExplicitVR 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 met
54. creating the format that DICOM messages send over a network t lt syntax gt 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 The MergeCOM 3 NET Assembly Developing DICOM Applications The MergeCOM 3 DICOM Toolkit NET Assembly provides classes and inter faces that represent all of the major components of the DICOM standard gt Utility and Intialization methods MC gt DICOM constants o MCdicom gt DICOM Applications o Local applications MCapplication o Remote applications MCremoteApplication gt MergeCOM 3 Logging o MClog o MClogHandler o MCloginfo o MClogTime gt DICOM Associations MCassociation o Association acceptors MCacceptor o Association requesters MCrequester o Association negotiation MCnegotiationInfo Li McstorageNegotiation d MCqueryRetri
55. 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 9 The following for example may be used to check exception after a network read 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 NETWORK_INACTIVITY_TIMEOUT System Console Out WriteLine Network stopped oO 55 else break catch System System Console Out WriteLine MCexception Exception e System Console Out WriteLine Error on network read assoc abort break You could of course have separate catch clauses fo
56. file that contains identifying information about 31 The DICOMDIR hierarchy the entire file set and usually dependent on the Application Profile a directory of the file set s contents Figure 8 shows a graphical representation of a DICOMDIR file and its central role within a DICOM File Set DICOMDIR File DICOM File Set DICOM Image Files Figure 8 A DICOM Directory File DICOMDIR within a DICOM File Set If 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 Directory Record Type Record Types which may be included in the next lower level Directory Entity PATIENT TOPIC PRINT QUEUE HANGING PROTOCOL PRIVATE PATIENT STUDY PRIVATE STUD
57. 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 Figure A 1 MERGE_STORE_SCP application data flow diagram Write received STORE Remote Storage MERGE STORE SCH 4 Service Class user images to disk Association Acceptance DICOM Standard Interface 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 161 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 strongly recommended Application conformance statements are included in this section along with any associated sequence of r
58. 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 lt serv gt lt cmd gt lt num gt g lt file gt c lt file gt l m q t lt syntax gt f lt file gt lt serv gt 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 1l 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 lt num gt This option specifies the number of messag files to be generated by mc3file If the
59. 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 when decompressing YBR_FULL or YBR_FULL_422 data JPEG Baseline Photometric MONOCHROME1 YBR_FULL_422 Interpretation MONOCHROME2 YBR_FULL Bits Stored Bits Allocated Samples Per Pixel Table 15 JPEG Baseline Supported Photometric Interpretations and Bit Depths 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 101 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 when decompressing YBR_FULL or YBR_FUL
60. its owning message or items System 10 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 device 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 e agreatly simplified way to deal with the complex encoding and decoding required within a DICOM
61. line because they are contained in lt filename gt 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 1 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 m This option allows the user to generate a DICOM file When generating the file object mc3fil ncodes the Fil Meta Information q 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 lt syntax gt are il for implicit little endian el for explicit little endian and eb for explicit big endian f lt file gt 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 the filename for each messag being generated The default value is file when creating a DICOM file and message when
62. 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 MCtag 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 93 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
63. method 114 Using Attribute Container 116 Using an Attribute Container in a Server Application sssssnesensseeeeneeeen 116 Using an Attribute Container in a Client Applcatton eenean 116 Declaring an MCattributeContainer Class 0 ec eeeeeeeeeeeeeeeseeneeeeeeeneees 116 Writing the provideDataLength method 117 Writing the provideData method 117 Writing the receiveDataLength method 0 0 cc eeeceeeeeeteeeeeeeneeeeeeneeeeeeaaes 118 Writing the receiveData Method 0 ceccceeeeeeeeeeeeeteeeeeeteeeeeetaeeeetenaeeeeeeaaes 119 Writing the receiveMediaDataLength method ssssesesseerreseerreererrssrens 119 Registering Your MCattrbuteContainer 120 Releasing Your MCattrbutetontainer 120 SEQUENCES Of Items aidsin aun sdaaceersaacanervaandcebaancsuanrdanceeveaucadestanaceeys 120 DICOM Re 123 Constructing a new MCfile Instance eee eeeteeeeeeeteeeeeeneeeeeeneeeeeeaaes 123 Construct an MCfile object with a pre populated data eet 123 Construct an MCfile object with an empty data set 124 Convert an MCdimseMessage object to an MCfile obiect 124 Accessing the service and command properties ssssssese nerens serere ereenn 124 Working with the contained file meta information cccceeeeeeeeeeeees 125 Accessing the File Preamble ccccccccceeeeneneeeeenceeeeeeeeeeeeeeaeeeeeeeneeeeneees 125 Working with the contained data set 125 Resetting the MCfile Object essnee 125 File Val EE 1
64. object When the service and command are not known at construction time the cost occurs when the validate call is made 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 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 j while err null System Console Out WriteLine err ToString rr msg getNextValidationError
65. problems Application Profile The MergeCOM 3 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 MergeCOM 3 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 For example if your application is an image source 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_QR_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 acm
66. properties MCdirRecord 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 object MergeCOM 3 creates an instance of the MCfile class that has a service name of DICOMDIR and uses C_STORE_RQ for the command see Table Son page 24 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 e 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 e getChildCount This method returns a count of the number of child records e getFirstChild This method returns the MCdirRecord for the first ch
67. remote application and the RemoteImplementationVersion property returns the Implementation Version of the remote application Maximum PDU Sizes During association negotiation MergeCOM 3 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 MergeCOM 3 created an ReadTimeout RemoteHostName RemotelpAddress RemotePort Acceptor Requester Active All about SOP classes getSopClassByName getSopClassByUid MCproposedContextList from information defined in the mergecom app file The ProposedContextList property returns a reference to the MCproposedContextList object used During association negotiation the DICOM association requestor proposes the services it wishes to use The association acceptor can then reject or accept each of the proposed services The NumberOfProposedContexts property returns the number of services proposed by the ass
68. requestAssociation method of the MCassociation class The parameters value names must be 1 to 33 bytes in length with no embedded spaces Table 32 Application profile section headers 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 MergeCOM 3 toolkit These strings are defined in detail in message txt This file is located in the mc3msg directory of your distribution The following is a list of currently supported services MergeCOM 3 Service Parameter BASIC_ANNOTATION_BOX BASIC_COLOR_IMAGE_BOX BASIC_FILM_BOX BASIC_FILM_SESSION BASIC_GRAYSCALE_IMAGE_BOX BASIC_PRINT_IMAGE_OVERLAY_BOX BREAST_IMAGING_RPI_QUERY CARDIAC_RPI_QUERY DETACHED_INTERP_MANAGEMENT DETACHED_PATIENT_MANAGEMENT DETACHED_RESULTS_ MANAGEMENT DETACHED_STUDY_MANAGEMENT DETACHED_VISIT_MANAGEMENT DICOMDIR ENHANCED_CT_IMAGE ENHANCED_MR_IMAGE ENHANCED_XA_IMAGE ENHANCED_XRF_IMAGE G_P_PERFORMED_PROCEDURE_STEP G_P_SCHEDULED_PROCEDURE_STEP G_P_WORKLIST GENERAL_RPI_QUERY HANGING PROTOCOL HANGING_PROTOCOL_FIND HANGING_PROTOCOL_MOVE IMAGE_OVERLAY_BOX_RETIRED INSTANCE_AVAIL_NOTIFICATION KEY_OBJECT_SELECTION_DOC MAMMOGRAPHY_CAD_SR MEDIA_CREATION_MANAGEMENT MODALITY_WORKLIST_FIND MR_SPECTROSCOPY PATIENT_ROOT_QR_FIND PATIENT_ROOT_QR_GET PATIENT_ROOT_QR_MOVE PATIENT_STUDY_ONLY_QR_FIND DICOM Ser
69. seconds to wait for a 181 INACTIVITY_TIMEOUT INSURE_EVEN_UID_LENGTHt RELEASE_TIMEOUT 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_DICO MDIR DUL_PARMS DUL_PARMS DUL_PARMS DUL_PARMS MEDIA_PARMS MEDIA_PARMS MEDIA_PARMS MEDIA_PARMS MEDIA_PARMS 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 ina 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 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 memory 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
70. 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 Abbreviations used in templates For example EV T 04000 SNM3 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 The following abbreviations are used in template definitions e EV Enumerated Value The values for are provided in the brackets e DT Defined Term The 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 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 e DTID Defined Template ID Identifier that specifies a template that shall
71. 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 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 DEFAULT mc3msg mrgcom3 msg This parameter specifies how the toolkit will validate a single NULL value in a type 3 attribute with VM gt 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 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
72. the C MergeCOM 3 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 Logging a message MClog 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 MCitem e MCproposedContextList e MCproposedContext e MCtransferSyntaxList e MCdata Using the MergeCOM 3 log file The Mergecom Logging namespace contains definitions for utilizing the MergeCOM 3 log file usually merge log The MergeCOM 3 logging mechanism 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 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
73. the attribute s value isFirst will be true if the library is presenting the first portion of the attribute s value If this is the last portion of the value that the library will present the TsLast 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 MergeCOM 3 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 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 attribute s value and the byte offset of the attribute s value from the beginning of the medi
74. 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 lt syntax_list_name gt List s of DICOM transfer syntaxes that will be supported by the services listed in the lt service_list_name gt sections The transfer syntaxes must be one of those listed in Table 34 Table 31 Application profile section headings Parameters The application profile contains the following parameters Parameter Section Description PORT_NUMBER lt remote_application_title gt This parameter is the TCP IP 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 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 SERVICE_LIST lt remote_application_title gt 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
75. 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_LOS SY Yes and COMPRESSION_J2K_LOSSY_USE_QU ALITY No a ratio can be specified The compressor attempts to reduce the image size to 1 COMPRESSION_J2K_LOSSY_RATIO Configuration Parameter for MC_Standard_Compressor When JPEG_2000 with COMPRESSION_WHEN_J2K_USE_LOS SY Yes and COMPRESSION_J2K_LOSSY_USE_QU ALITY 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_LOS SY Yes this indicates which metric should be used for lossy compression ratio or quality 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 MergeCOM 3 should compress into when compressing RGB images DEFAULT YBR_FULL_422 This parame
76. 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 DL 3 52 09 00 7919 MC3 T5 0008 0005 VI Unable to check condition Q1l 3 52 09 00 7919 MC3 T5 0008 0023 VI Unable to check condition 0l 3252 09 00 7919 MC3 TS See 0033 VI Unable to check condition DL 3 52 09 00 7919 MC3 T5 0010 1010 VE 41Y Invalid value for this tag s VR gJ 3 52 09 00 7919 MC3 T5 0018 0010 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0015 VE Required attribute has no value O1 3 52 09 00 7919 MC3 T5 0018 0020 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0021 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0022 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0023 VW Invalid attribute for service O1 3 52 09 00 7919 MC3 T5 0018 0050 VW Invalid attribute for service O1 3 52 09 00 7919 MC3 T5 0018 0080 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0081 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0082 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0084 VW Invalid attribute for service O1 3 52 09 00 7919 M
77. would result from using the streamOut call 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 streamIn 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 A streamOut call could look like the following class MyStreamHandler MCdataSink public void receiveData MCdata data System Object origin Store the data described in data as appropriate if errorOccured throw new MCcallbackCannotComplyException MCdimseMessage msg non null referenc MyStreamHandler streamHandler new MyStreamHandler try msg streamOut 0x00080000 OXx7FDFFFFF MCtransferSyntax ExplicitLittleEndian streamHandler catch MCnoAttributesException e catch MCillegalArgumentException ei catch MCcallbackCannotComplyException ei 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 encod
78. 1 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 NEMA Standards Publication No PS 3 5 1993 DICOM Part 5 Data Structures and Encoding p 4 A quick walk through DICOM 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 because 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
79. 2 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 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 ISO OSI Layers DICOM Parts Your DICOM Application Service and Message Definitions Message Exchange Part 7 Session amp
80. 25 The MC TE StreaM deier ege EES 126 Setting the file transfer syntax UD 126 Setting the file system file associated with the MCfile object 126 Listing the file s attributes 2 0 2 eee ce ccccceceeeeeeeceneeeceeeeeeeteceaeeeeesesetecnieaeeeeeess 127 Using the MCmediaStorageService Class 127 Constructing an MCmediaStorageService oblect 128 Kl te HIE 128 Creating and Writing Files 2 0 cceeeeeeeeeeeeeeeeeeeeeeeeaeeeeeeaeeeeeeneeeeeeaes 130 The DICOMDIR file ss c20 eccedineeceesia devia dives EEeeEEEEENEN 131 ue IC 131 Constructing a new MC dr Instance 132 The MCdirRecord dass eccceeeeeeeeeeeeeeeeeeeeeeeeeeeaeeeeeeaeeeeeeaeeeeeenaeeeeeeaes 132 Navigating the DICOMDIR A 133 Adding and Deleting DICOMDIR Records 133 Memory Managemen ttt ccscccceceescceeteeeceeeenseceeeseseceenseeaceeeenenceeeeneaeeeettenees 134 Assigning Pixel Datazenter edie need aed eege ae 134 Using Attribute Containers eiie ineei eane Area EAA aee REEE 135 Replacing MergeCOM 3 s Memory Management Functions 008 135 Accessing Data When Needed AA 135 Saving Received Images Directly to Diek 136 DICOM Structured Reporting sasssa aeea EAER EAER AREARE 136 Structured Report Structure and Modules nnn 137 Content Item Types ara ipata ira eiei aneii AE AL A aadis aiara Rna 139 Relationship Types between Content ItemS cccceeceeeeeeeeeetteeeeeeees 141 Content Item Identifier A 142 Observation Context
81. 3 C C DICOM Toolkit Dynamic Library 14 Binary Message Information and Data Dictionary Files 0 ceeeeeeee 14 Sample Applications EE 14 MergeCOM 3 Message Database Manual and Tools nss nssensssesene nenene 14 Documentation HRoadrmanp nenna nent nnmnnn 15 Convention Sesinin a aa aiaa 15 UNDERSTANDING DICOM aaia aaa a aAA AAAA 17 General CONCE PIS EE 17 Application HEEN 17 Services and Meta Services sseeesiceenisierreerrrunseenndstinnnsddunaniannnneannadaaaa 17 Information M del issena a a i tele EA E EN 21 Networking nananana na 21 COMIMANGS asiasana denne ce nie cauvridanwny cenitidu vad a a cohen cdavagaatieaeraeeaevaienneeess 21 Association Negotiation cccccecccceeeseeeeeeeeneeeeeenaeeeeeeneeeseeiaeeeeeeneeeeeeaes 22 MGSSAGES TTT 24 DICOM Data Dictionary crnca 24 Message Handling EE 25 Private Attributes ciiin aieia ai a E aaa 26 Media Interchange sesissra onian AEEA A 27 DICOM RTE 27 File SOUS EE 31 THE DICOMDIR ciraden penine EAEEREN EAER AANER ERIE AEE 31 File Management Roles and ServiCes 0 ccccccceeeeeeeeeeeeeeeeeeteneeeeeeneeeeeead 34 alle ul 35 USING THE MERGECOM 3 DICOM TOOLKIT nissssssesseninensseeerrrrrrnssrrerrrnne nn 37 ContiguratioM assie a aeaaea Aa aae E 37 Initialization Ee 7 esu ageet a aaa a a a aN 37 Lieler Le lee UE 38 System Profile 44 Service Profile 46 Message Logging EE 47 Utility Programs 0 eee cceeeeeeeeeeeeeeneeeeeeeeeeeeeeeeaeeeseeaaeeese
82. 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 iteml1 return dataSet Reading SR Documents Reading SR Documents is done in a similar way to encoding but in reverse sequence The following code illustrates a reading sequence for the Key Object Document 1 Reading a File or receiving a message object Reading root level attribut es 2 3 Creating a new MCstructuredReport object 4 Reading SR Content from 5 Traversing SR content tree and accessing Content Node attributes generated above the dataset 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 Reading the first childr if
83. 98 0023 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 the Application Data Flow Diagram which specifyies the relationship between the Application Entities and the external world or Real World activities e a functional 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 MergeCOM 3 DICOM Toolkit provides the core functionality required to facilitate data
84. C3 T5 0018 0085 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0018 0091 VW Invalid attribute for service O1 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 dE 3 52 09 00 7919 MC3 T5 0018 5101 VE Required attribute has no value DL 3752 0900 79190 MCS TS acon 0032 VW Invalid attribute for service DL 3 52 09 00 7919 MC3 T5 0020 0037 VW Invalid attribute for service 01 3 52 09 00 7919 MC3 T5 0020 0052 VW Invalid attribute for service Q1 3 52 09 00 7919 MC3 T5 0020 0060 VI Unable to check condition gpi 3 52 09 00 7919 MC3 T5 0020 1040 VW Invalid attribute for service DI 3 52 09 00 7919 MC3 T5 0020 1041 VW Invalid attribute for service 0l 3 52 09 00 7919 MC3 T5 0028 0006 VI Unable to check condition l 3 52 09 00 7919 MC3 T5 0028 0030 VW Invalid attribute for service DL 3 52 09 00 7919 MC3 T5 0028 0034 VI Unable to check condition DL 3 52 09 00 7919 MC3 T5 0028 1101 VI Unable to check condition DL 3 52 09 00 7919 MC3 T5 0028 1102 VI Unable to check condition pi 3 52 09 00 7919 MC3 T5 0028 1103 VI Unable to check condition Q1 3 52 09 00 7919 MC3 T5 0028 1201 VI Unable to check condition Notice in this log file that all warnings and informational messages are als
85. Class UID and Implementation Version 74 Maximum PDU SIZES inania e renee A A N 74 The Proposed Context Uert 74 The Read Timeout Value rren oaae a a EAEE R 75 The Remote Hos s Name and Address 75 ASSOCIALION e EE 75 ASSOCIALON EE 75 Using the MCsopClass dass 75 Using the MGvi Class 2 052 4 ate ee ee peer 76 Using the MCtag ClaSSi gicetits ctu edtlinsie tanientiddiesidsaetiaen agate 77 Constructing non private fags 78 Constructing private taQs eiieeii aae EE Ara A RA AN AEA ETEEN NEE RESENA 78 Using the MCdataElement class 78 Constructing standard data elements AAA 79 Constructing non standard data elements AAA 79 Working With Attribute Sets eseseeeeeeeneseerneseerresterrestrresttrnssttnnssttnnssrrnnnnt 80 Constructing Message Oblecls eccceeeeeeeeeeeseeeeeeeseeeeeeseeeeeeseeaeeeseenaeees 80 Construct a message using a pre populated data Set ceeeeeeees 80 Construct a message with an empty data Set eceeeeeeeeeeeeeteeeeeeeeees 81 Construct a message using an existing data sei 81 Convert an MCfile object A 82 MCdimseMessage Properties ececeeeeeeeeeeeeeeeeeeeeeteeeeeteeeeeeteeeeesieeeeenea 82 Transfer Syntax Used oann era a a e A R Gier 82 Contained attribute seis 82 The service and command used by the message eeeeeeeeeeteeeeeenteeeeeeaes 82 MCdimseMessage Command Set Properties 0 cccceceeeeeeeeeeeeeeenteeeeeeee 82 Constructing File Objects 2c csecseeeeee
86. 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 SELECTED FROM SELECTED_FROM 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 Content Item Identifier Content 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 21 illustrates an SR content tree and identifiers associated with each Content Item The MCitemldentifer class encapsulates the Content Item Identifer Content Item ID 01 Content Item ID 01 02 Content Item ID 0101 Content Item ID Content Item ID 010101 01 01 02 Figure 20 SR 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 o
87. FFC whose value is specified by the standard to have no significance File Sets DICOM Files must be stored on removable media in a DICOM File 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 eg 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
88. L_422 data JPEG Extended Process 2 amp 4 Photometric MONOCHROME 1 RGB YBR_FULL_422 Interpretation MONOCHROME2 YBR_FULL Bits Stored cal Bits Allocated Samples Per 1 Pixel Table 16 JPEG Extended Supported Photometric Interpretations and Bit Depths 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 SPECIAL NOTES JPEG Lossless Non Hierarchical Process 14 Photometric MONOCHROME 1 RGB Interpretation MONOCHROME2 Bits Stored 2 to 16 Table 17 JPEG Lossless Supported Photometric Interpretations and Bit Depths 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 for this transfer syntax JPEG 2000 When used for Lossy P
89. 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 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 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 retrie
90. MCresultsManagementService o MCstorageService o MCstorageCommitmentService o MCstudyContentNotificationService o MCstudyManagementService o MCverificationService DICOM media services and objects o Files MCabstractMessage MCfile DICOMDIR MCdir DICOMDIR record MCdirRecord o DICOM files service MCmediaStorageService gt Exception handling Mcexception MCruntimeException and their sub classes gt Compression related o Compression Interface MCcompression RLE Compressor MCrleCompressor RLE Decompressor MCrleDecompressor JPEG and JPEG2000 Compressor MCstandardCompressor JPEG and JPEG2000 Decompressor MCstandardDecompressor ae Ge Ze Ge Ze This section of the User s Manual attempts to present the highlights of the MergeCOM 3 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 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 Visibility Constant values for DICOM tags Errors Happen Exception Numbers
91. MPLEMENTATION_CLASS_UID when requesting an association If set to YES a different implementation class UID may be used DEFAULT YES ACCEPT_DIFFERENT_VERSION ASSOC_PARMS 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 ACCEPT_MULTIPLE_PRES_CONTEXTS ASSOC_PARMS 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 175 EXPLICIT_BIG_ENDIAN_SYNTAX EXPLICIT_LITTLE_ENDIAN_SYNTAX HARD_CLOSE_TCP_IP_CONNECTION IMPLEMENTATION_CLASS_UID IMPLEMENTATION_VERSION DEFLATED_EXPLICIT_LITTLE_ENDIAN_SYNT AX IMPLICIT_BIG_ENDIAN_SYNTAX IMPLICIT_LITTLE_ENDIAN_SYNTAX LICENSE RLE_SYNTAX ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS 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 I
92. MergeCOM 3 DICOM Toolkit saves the application developer a great deal of work in the message 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 are Enumerated Values Defined Terms and Value Type DICOM specifies that some attributes should have values from a specified set of 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 term it 25 Value type MCfile MCfileMetalnfo 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 needs to have a value Attributes can be req
93. Message class An excerpt from a MergeCOM 3 DICOM Toolkit message 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 6196 6196 03 29 21 14 54 78 MC3 W Invalid value for this tag s VR 6196 03 29 21 14 56 41 MC3 Read_PDU_Head E Error on Read Transport call 6196 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 47 Do a DICOM diff Convert Image Formats 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 MergeCOM 3 log file section for more details on logging Utility Programs The MergeCOM 3 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 MergeCOM 3 DICOM Toolkit C Run time Library and require that
94. Message or MCfile object is constructed by the application or if any validate or File Description and Use e validateAttribute is called or if an MCdir object is constructed mrgcom3 dct MergeCOM 3 data dictionary file Table 25 Files needed when deploying an application Configuration Options The majority of MergeCOM 3 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 MergeCOM 3 application to help reduce potential problems These options are listed in Table 26 with descriptions of how they can be set Configuration Option Description ACCEPT_ANY_APPLICATION_TITLE When set to NO MergeCOM 3 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 MergeCOM 3 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
95. Multi frame Grayscale Word Secondary Capture Image Storage 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 Positron Emission Tomography Curve Storage Procedural Log Storage Raw Data Storage Real World Value Mapping 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 Spatial Registration Storage Spatial Fiducials Storage 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 C STORE 29 Standalone Overlay Storage Standalone Curve Storage Standalone Modality LUT Storage Standalone VOI LUT Storage Stored Print Storage Ultrasound Image Storage 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 Stora
96. NE The unique identifier UID MergeCOM 3 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 lt none gt When set to YES MergeCOM 3 will interpret private transfer syntax 1 as being encoded in little endian format DEFAULT YES When set to YES MergeCOM 3 will interpret private transfer syntax 1 as being encoded in explicit VR format DEFAULT YES When set to YES MergeCOM 3 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 179 PRIVATE_SYNTAX_2_ SYNTAX PRIVATE_SYNTAX_2_LITTLE_ENDIAN PRIVATE_SYNTAX_2_EXPLICIT_VR PRIVATE_SYNTAX_2_ ENCAPSULATED INITIATOR_NAME RECEIVER_NAME SEND_ECHO PRIORITY SEND_LENGTH_TO_END ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS ASSOC_PARMS DIMSE_PARMS DIMSE_PARMS DIMSE_PARMS DIMSE_PARMS syntaxes are encoded DEFAULT NO The unique identifier UID MergeCOM 3 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 MergeCOM 3 will interpret private transfer syntax 2 as being encoded in little endian format DEFAULT YES When set to YES MergeCOM 3 will interpret private transfer syntax 2 as being encoded in explici
97. Number tem Console Out Wri sopl BaseClass tem Console Out Wri sopl MetaClass tem Console Out Wri cel cel Ce f sopl Equals sop2 System Console Out WriteLine They should be equal ystem Collections IList baseClasses sopl BaseClasses f baseClasses null System Console Out WriteLine Not a meta sop ystem Collections BitArray commands sopl Commands f sopl Name Equals sop2 Name System Console Out WriteLine Should be equal Uid Line Should be equal l sop2 Number Line Should be equal Line That s right Ce Line 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 vrAT Attribute Tag vrCS Code String vrDA Date vrDS Decimal String vrDT Date Time vrFD Floating Point Single vrFL Floating Point Double vrlS Integer String vrLO Long String MCvr ToString validateValue MCtag
98. P FILE DIRECTORY users mc3adv tmp_files MSG_INFO_FILE users mc3adv mrgcom3 msg The LARGE_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 45 ye Performance Tuning Callbacks MCattributeContainer Performance Tuning Message info Files Capturing Network Data Items MCitem 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 w
99. P 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 specified 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 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 MergeCOM 3 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 JPEG_BASELINE_SYNTAX ASSOC_PARMS This value defines the UID for JPEG Baseline Process 1 transfer syntax DEFAULT 1 2 840 10008 1 2 4 50 JPEG_EXTENDED_2_ 4 SYNTAX ASSOC_PARMS This value defines the UID for JPEG Extended Process 2 amp 4 transfer syntax DEFAULT 1 2 840 10008 1 2 4 51 JPEG_EXTENDED_3_5 SYNTAX ASSOC_PARMS This value defines the UID for JPEG Extended Process 3
100. RD MCtemporalCoordDateTimeltem Purpose of Reference Temporal Coordinates i e time or event based coordinates of a MCtemporalCoordTimeOffsetsltem region of interest in the DICOM MCtemporalCoordPositionsltem Co The SCOORD Content Item from which Temporal Coordinates are selected is denoted by a SELECTED FROM Item Type MergeCOM Class Concept Name Description C EE CONTAINER MCcontainerltem Document Title or CONTAINER groups Content document section Items and defines the heading or heading Concept category of observation that Name conveys the applies to that content The Document Title if the heading describes the content of ONTAINER is the the CONTAINER Content Item and Document Root may map to a document section Content Item or the heading in a printed or displayed category of document observation Relationship Types between Content Items 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 MergeCOM Definition column specifies the enumerated value used in the Toolkit to identify the Content Item Relationship Table 22 SR Relationship Types Relationship Type MergeCOM Definition Description CONTAINS CONTAINS Source Item contains Target Content Item e g CONTAINER History CONTAINS TEXT mother had breast cancer CONTAINS IMAGE 36 HAS OBS CONTEXT HAS ORG CONTEST Has O
101. Role SCP SCU SCP BOTH SCU SCP NOT DEFINED SCU SCP 41 Configuring Asynchronous Communications Support Configuring Extended Negotiation for Clients Table 8 Negotiated Roles For detailed information about the content of the Application Profile see Application Profile in Appendix D Configuration Parameters DICOM Asynchronous Communication MergeCOM 3 also optionally supports DICOM Asynchronous Operations Window Negotiation through service lists The same service 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_SCP_Service_List ERVICES SUPPORTED 1 Number of Services AX OPERATIONS INVOKED 10 AX OPERATIONS PERFORMED 10 ERVICI STANDARD_MR ss PP Pp DI Di D 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 MergeCOM 3 Extended Negotiation MergeCOM 3 optionally supports configuration of DICOM Extended Negotiation information in service lists Current
102. SS STANDARD_ECHO STANDARD_ENCAPSULATED_ PDF STANDARD_ENHANCED_SR STANDARD_GRAYSCALE_SOFTCOPY_PS STANDARD_HARDCOPY_COLOR STANDARD_HARDCOPY_GRAYSCALE STANDARD IO PRESENT DICOM Service Class MergeCOM 3 Service Parameter DICOM Service Class 171 MergeCOM 3 Service Parameter DICOM Service Class BASIC_GRAYSCALE_PRINT_MANAGEMENT Print Management META_SOP DETACHED_PATIENT_MANAGEMENT_META Patient Management META_SOP DETACHED_RESULTS_MANAGEMENT_META Results Management META_SOP Table 33 Application profile parameters Transfer syntax lists are contained in the service lists The following is a list of the currently supported transfer syntaxes MergeCOM 3 Transfer Syntax Parameter Description IMPLICIT_LITTLE_ENDIAN Implicit VR Little Endian Default Transfer Syntax for DICOM IMPLICIT_BIG_ENDIAN Implicit VR Big Endian EXPLICIT_LITTLE_ENDIAN Explicit VR Little Endian EXPLICIT_BIG_ENDIAN Explicit VR Big Endian RLE Run length Encoding DEFLATED_EXPLICIT_LITTLE_ENDIAN Deflated Explicit VR Little Endian 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 Sele
103. String msg Each of these methods writes an entry into the MergeCOM 3 log file containing msg The entry will be logged only if messages of specific type have been enabled in the merge ini file The MergeCOM 3 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 lt destinations gt WARNING_MESSAGE lt destinations gt INFO _MESSAGE lt destinations gt lt destinations gt may be one or both of these values separated by commas File to request that the messages b written to the LOG_FILE Screen to request that the messages b written to the system s standard out Memory to request that the messages b written to system memory This option 59 Log Callback addHandler removeHandler MClogHandler MClogInfo Create an application object MCapplication getApplication 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 MergeCOM 3 log messages into your application s logging scheme To do this create a new class that implements the MClogHandler interface That interfac
104. Syntax 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 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 SERVICE L SYNTAX_LIST_1 1 Number of Services TANDARD_CT T_Syntax_List_SCP towed CH CT_Syntax_List_SCP SYNTAXES_ SUPPORTED 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 MergeCOM 3 places on them during association negotiation In this case MergeCOM 3 would select JPEG_BASELINE if proposed followed by EXPLICIT_LITTLE_ENDIAN IMPLICIT_LITTLE_ENDIAN and EXPLICIT_BIG_ENDIAN Network message exchange is
105. SyntaxList e the 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 association 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 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 as
106. 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 ALLOW_COMMA_IN_DS_FL_FD_STRINGS MESSAGE_PARMS When set to Yes a comma or a period will be allowed in String values passed to appendvValue 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 ALLOW_INVALID_PRIVATE_ATTRIBUTES MESSAGE_PARMS When reading messages or file objects this parameter specifies if private attributes encoded in an invalid format should be ignored or parsed DEFAULT NO ALLOW_INVALID_PRIVATE_CREATOR_CODE MESSAGE_PARMS When reading messages or file objects S this parameter specifies if private creator codes encoded with invalid characters should be ignored or parsed DEFAULT NO CALLBACK_MIN_DATA_SIZE MESSAGE_PARMS When using an MCattributeContainer to store large data such as pixel data this option specifies the minimum size of value f
107. Y 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 Root Directory Entity i 33 VALUE MAP PRIVATE ENCAP DOC PRIVATE TOPIC STUDY SERIES IMAGE OVERLAY MODALITY LUT VOI LUT CURVE FILM SESSION PRIVATE VISIT PRIVATE RESULTS INTERPRETATION PRIVATE INTERPRETATION PRIVATE The first row of this table specifies the directory records that can be contained within the Root Directory Entity Table 6 Allowed Directory Entity File Management Roles and Services File Management 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 DICOM File Services Description M WRITE Create new files in a file set and assign them a file ID M READ Read existing files based on their file ID M DELETE Delete existing files based on their file ID M INQUIRE FILE SET Inquire free space available for creating new files within a file set M INQUIRE FILE Inquire date and time of file creation or last update if applicable for any file within a file set Table 6 DICOM File Services The MergeCOM 3 DICOM Toolkit supplies the MCmed
108. YES ERROR_MESSAGE MergeCOM3 This parameter informs the toolkit to log error messages INFO_MESSAGE MergeCOM3 This parameter informs the toolkit to log error messages LOG_FILE MergeCOM3 This is the name of the MergeCOM 3 message log The file will be re jcreated by MergeCOM 3 This parameter is ignored by embedded toolkits DEFAULT merge log LOG_FILE_BACKUP MergeCOM3 This is a Boolean parameter that tells MergeCOM 3 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 LOG_FILE_LINE_LENGTH MergeCOM3 This option specifies the number of characters that occur on a line within the merge log file DEFAULT 78 MINIMUM 16 MAXIMUM 254 LOG_FILE_SIZE MergeCOM3 This is the number of 80 byte records which will be created for the log file Le 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 LOG_MEMORY_SIZE MergeCOM3 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 MergeCOM3 File containing the MergeCOM 3 application configurations MERGECOM_3_PROFILE MergeCOM3 File containing the
109. YNTAX_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 Table 34 Transfer Syntax List Parameters 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 INT 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 The 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 o
110. You control the endian used in the file stream MergeCOM 3 automatically sets fields in the File Meta Information Sample media write snippet Capplication myApp non null referenc 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 See the Assembly Windows Help File for a detailed description of the use of these read methods 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 The parameter must be an even number If the file contains group length attr
111. a Callback Class to Retrieve an Attribute s Value 95 Retrieving an Attribute Value s Properties ce ccceceeeeeeeeeeeeeteeeeeenteeeeteee 96 Listing an Attribute Get 97 Converting an Attribute Set into an XML String eee eeeeeeeeeeeeeeeeeeeeeees 97 Converting an XML string into an Attribute Gei 98 S bit Pixel Data ivi ssc vontis eevee geed ege medion 98 Encapsulated Pixel Data 99 Working with MCabstractMessage Derived Classes eenennnesrrreerrreeereeee 99 Compression and Decompression s sssssssssssttrrerstrrtttntenrerrtttnn nn nnsn nenn 100 MergeCOM 3 Supplied Compressors and Decompressors 0 100 Validating Attribute Sets AA 104 The Overhead of Validation cecceeecceeeeeeeeeeeeeeneeeeeeneeeeeesaeeeeeenaeeeeneaes 108 Validating a Single Attribute 2 0 eee ee eeneeeeeeceeeeeeeaeeeeeeaeeeeeeaeeeeeeaaes 109 Streaming Attribute Sets 0 cccccceceeceeeneedecdeceeseeeesaesedeeeeesseeeseesecaasensenees 109 Message to XML conversion sssseesssssessresserrassrnnesssnnaarnnnaatannaaennnaatannaanena 112 XML to Message conversion sseseessesisseerrssserissttrrssttrnsstirnnsttnnnstennnnen nnt 112 Message Exchange Network Only 113 Reading Network Messages 113 Using the MCdimSeService cccccceceeeecceceeeeeeeceeeeeeeeeenneeceenenneeeenenneees 113 Using the sendRequestMessage Method cccecceeceeeeeeeeeeeeseeneeeeeenaeees 114 Using the sendResponseMessage
112. a file 119 How to register an MCattributeContainer object registerAttributeContainer How to release an MCattributeContainer object releaseAttributeContainer Values for SQ attributes MCitem 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 MergeCOM 3 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 reference 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 myCon
113. 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 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 aserver Clients will use the requestAssociation method of the MCassociation class and servers will use the startListening 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 MCproposedContext List 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 lt service_list_name gt 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 L
114. 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 private attributes 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 MergeCOM 3 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 configurati
115. ag 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 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 The IsLast property of the returned MCdata object must be set to true if 117 MergeCOM 3 calls to provide the attribute s data length this is the last portion of the value that will be provided MergeCOM 3 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 s 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 MergeCOM 3 will make no further calls for this instance of the attribute public MCdata provideData MCattributeSet attribSet MCtag tag bool isFirst byte array new b
116. ames are the strings used in MergeCOM 3 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 the MCproposedContextList 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 Acme_Store_SCP Your Application Acme_QR_SCP Figure 10 An example configuration of DICOM applications 39 Don t forget Transfer Syntax List 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 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 For DICOM Toolkit users MergeCOM 3 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 exa
117. ance 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 MergeCOM 3 will use IPV4 or IPV6 if it is enabled in the operating system DEFAULT IPv4 Table 35 System profile parameters t These 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 MergeCOM 3 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 MergeCOM 3 DICOM Toolkit Extended Toolkit Manual for further details The location of the Serv
118. 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 85 ItemName Specifying the file name The fileName parameter specifies an 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 MergeCOM 3 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 t
119. atch MCassociationAbortedException e Requestor reacts Dealing with transfer syntaxes If you are rejecting the association DICOM allows you to specify the reason 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 MCre ject Reason enumerated value These codes are available MCrejectReason NO_REASON_GIVEN MCrejectReason APPLICATION_CONTEXT_NAME_IS_NOT_SUPPORTED MCrejectReason CALLING_AE_TITLE_NOT_RECOGNIZED MCrejectReason CALLED_AE_TITLE_NOT_RECOGNIZED 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 e catch
120. ated 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 MergeCOM 3 DICOM Toolkit currently supports all transfer syntaxes specified in the DICOM standard The names used for these transfer syntaxes are defined in Table 35 System profile parameters in Appendix D Configuration Parameters MCtransferSyntax MCtransferSyntaxList Transfer syntax priority during association negotiation As mentioned earlier MergeCOM 3 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 in 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 MergeCOM 3 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 MergeCOM 3 would select the RLE transfer syntax because it was listed first in the transfer syntax list When a transfer syntax list is not specified in a service list the priority MergeCOM 3 DICOM Toolkit places on transfer synta
121. ax 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 MergeCOM 3 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 MergeCOM 3 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 use 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 th
122. be byte swapped We do not look at the bits allocated and bits stored tags to determine that the pixel data itself is 8 bit data we always treat pixel data 7fe0 0010 as OW The pixel data must be assigned as byte swapped 7 lrecently upgraded to a new release of the MergeCOM 3 DICOM Toolkit Since this upgrade exceptions are being thrown by the MCaittributeSet attribute encoding methods This code worked before the upgrade What is causing these problems The MergeCOM 3 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 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 part
123. been initialized by using the static mcIsInitialized method of the MC class The method returns true 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 Releasing the library The static mcLibraryRelease method of the MC class is used to release the resources used by the MergeCOM 3 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 MergeCOM 3 application This method will release all resources allocated by the MergeCOM 3 C C DICOM Toolkit dynamic link library mcLibraryRelease must be called in the same application domain in which the 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 MergeCOM 3 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 MergeCOM 3 NET Classes call a number of routines in
124. berOfAcceptableContexts 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 called 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 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 c
125. bservation Context Target 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 MOD HAS_CONCEPT_MOD Has Concept Modifier Used to qualify 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 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 HAS ACQ CONTEXT HAS_ACQ_CONTEXT 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 141 Relationship Type MergeCOM Definition Description a INFERRED FROM INFERRED_FROM Source Content Item conveys a measurement or other inference made from the Target Content Items
126. cation Context Name that is defined for the DICOM standard 1 2 840 10008 3 1 1 1 Refer to Annex A in Part 7 of the DICOM standard for more information TCP IP Listen Port 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 The LocalApplication property retrieves the MCapplication object identifying the DICOM application responsible for this MCassociation object Application Entity Title Each DICOM application is assigned a application entity ID Known also as the application title 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 LocalImplementationClassUid property returns the Implementation Class UID of the local application and the LocalImplementationVersion property returns the Implementation Version of the local application The Remote ImplementationClassUid property returns the Implementation Class UID of the
127. cation runs on a resource rich system you should set LARGE_DATA_STORE to the value MEM in the Service Profile and MergeCOM 3 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 callback class to store the Pixel Data in fewer big blocks or one large block and keep them in primary memory for rapid access MergeCOM 3 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
128. cations These files are described in Table 25 File Description and Use NET MergeCOM 3 library wrapper This library services your calls to the Native MergeCOM 3 DICOM Toolkit Library required for deployments on 32 bit platforms required for deployments on 64 bit platforms Picn20 dll Pegasus libraries used for compression Picn6220 dll Pegasus Imaging Corporation www jpg com Picn6320 dll required for deployments on 32 bit platforms Picn6420 dll Picn6520 dll Picn6820 dll Picn6920 dll picx20 dll 64 bit Pegasus libraries used for compression picx6220 ssm Pegasus Imaging Corporation www jpg com picx6320 ssm required for deployments on 64 bit platforms picx6420 ssm picx6520 ssm picx6820 ssm picx6920 ssm merge ini MergeCOM 3 initialization file This file contains logging configuration and path names for the other configuration files mergecom pro MergeCOM 3 system profile This file contains general run time configuration options mergecom app MergeCOM 3 application profile This file contains configuration information about the services supported by the MergeCOM 3 application and information about remote DICOM applications mergecom srv MergeCOM 3 services file This file contains information about the services supported by MergeCOM 3 mrgcom3 msg MergeCOM 3 message information file This file contains validation information for DICOM messages This file is required if a non empty MCdataSet MCitem MCdimse
129. contain a command set MCcommandSet and 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 obj ect MCdimseMessage MCfile MCcommandSet MCfileMetalnfo MCdataSet MCdataSet MCattributeS et sub classes MCattributeS et sub classes Figure 16 Attribute Sets Contained in DICOM objects 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 described 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 attribu
130. ction Non Hierarchical Process 7 amp 9 JPEG FULL_PROG NON _HIER_10 12 JPEG Full Progression Non Hierarchical Process 10 amp 12 JPEG FULL PROG NON HIER 11 213 JPEG Full Progression Non Hierarchical Process 11 amp 13 JPEG Lossless Non Hierarchical Process 14 JPEG Lossless Non Hierarchical Process 15 JPEG Extended Hierarchical Process 16 amp 18 JPEG Extended Hierarchical Process 17 amp 19 JPEG Spectral Selection Hierarchical Process 20 amp 22 JPEG Spectral Selection Hierarchical Process 21 amp 23 JPEG Full Progression Hierarchical Process 24 amp 26 JPEG Full Progression Hierarchical Process 25 amp 27 JPEG Lossless Hierarchical Process 28 JPEG Lossless Hierarchical Process 29 JPEG LOSSLESS HIER 14 JPEG Lossless Hierarchical First Order Prediction Process 14 Selection Value 1 Default Transfer Syntax 173 MergeCOM 3 Transfer Syntax Parameter Description RI JPEG_2000_LOSSLESS_ONLY JPEG _LS_LOSSY JPEG LS Lossy Near Lossless MPEG2_MPML MPEG2 Main Profile Main Level 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 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_S
131. d 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_INC 00 This attribute has group number 1455 a private identification code string of ACME_IMG_INC and a single byte element number of 00 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 MCmediaStorageService DICOM File Structure MCfile MCfileMetalnfo message while avoiding collisions MergeCOM 3 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 The DICOM Standard specifies a DICOM file format for the inte
132. d only if LARGE_DATA_STORE FILE An absolute or relative path may be specified DEFAULT UN_VR_CODE MESSAGE_PARMS 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 WORK_BUFFER_SIZE i MESSAGE_PARMS This parameter specifies the amount of data that is buffered in the toolkit before being stored internally or passed to a User es callback method This option impacts the streamIn streamOut sendRequestMessage sendResponseMessage 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 CAPTURE_FILE TRANSPORT_PARMS 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 CAPTURE_FILE_SIZE TRANSPORT_PARMS This parameter specifies the maximum size in kilobytes that capture files are allowed to grow Capture files are generat
133. d port number TPEndPoint ep new IPEndPoint localAddress 1114 Mcassociation startListening scpApp ep false myContext myHandler 67 STOP stopListening MCresultContext NumberOfAcceptable Contexts FirstAcceptableContext NextAcceptableContext MCassociation accept reject MCresultContext The acceptor decides Accept or Reject 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 MergeCOWM 3 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 Num
134. d 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 ge DICOM Windows Help Release Message File Reference Notes Database Manual Manual Figure 4 MergeCOM 3 DICOM Toolkit Documentation Roadmap Conventions This manual follows a few formatting conventions 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 15 Sample commands appear in bold courier font while sample output source code and method calls appear in standard courier font MCapplication Client Server MCdimseService and it s subclasses MCfileService and it s subclasses MCsopClass 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 what 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 a
135. dia M WRITE M READ M M INQUIRE M INQUIRE FILE Roles DELETE FILE SET FSU FSC FS Mandatory Mandatory Mandatory Mandatory Mandatory R Table 7 Media Application Operations and Roles 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 35 e havea 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 MergeCOM 3 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 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 app
136. discussed further in one of the following sections MergeCOM 3 Message Classes Before we discuss the process of transferring messages we must discuss some basic MergeCOM 3 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 MCcommandsSet 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 71 Send messages using one of the MCdimseService sub classes or the MCdimseService class itself MCdimseMessage MCcommandSet a type of MCattributeSet MCdataSet a type of MCattributeSet MCattributeSet MCattribute PN MCattribute SQ Value Doe John value 3 items MCattribute MCattribute MCattribute MCattribute MCattrib
137. e 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 MergeCOM 3 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 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 MergeCOM 3 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 ove
138. e the bulk value you must use the readBulkData method or the readNext Frame 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 at a time 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 readBulkData 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 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
139. e 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 Listing the file list DICOM File Service Classes MCfileService MCmediaStorageService You must interface with the selected media device Listing the file s attributes The list 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
140. e and unit of measurement CODE MCcodeltem Type of code e g Categorical coded value Findings Representation of nominal or non numeric ordinal values DATETIME MCdateTimeltem Type of DateTime Date and time of occurrence of the e g Date Time of type of event denoted by the onset Concept Name DATE MCdateltem Type of Date e g Date of occurrence of the type of Birth Date event denoted by the Concept Name TIME MCtimeltem Type of Time e g Time of occurrence of the type of Start Time event denoted by the Concept Name UIDREF MCuidReferenceltem Type of UID e g Unique Identifier UID of the entity Study Instance UID identified by the Concept Name PNAME MCpersonNameltem Role of person e g Person name of the person whose Recording Observer role is described by the Concept Name COMPOSITE MCcompositeltem Purpose of Reference A reference to one Composite SOP Instance which is not an Image or Waveform IMAGE MCimageltem Purpose of Reference A reference to one Image IMAGE Content Item may convey a reference to a Softcopy Presentation State associated with the Image WAVEFORM MCwaveformltem Purpose of Reference A reference to one Waveform SCOORD MCspatialCoordinatesltem Purpose of Reference 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 TCOO
141. e not accessed when the MCdataSet object is constructed The MCdataSet object contains no attributes and the set ServiceCommand 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 Constructing a message to use with the MCdimseService derived classes TransferSyntax Command ServiceName setServiceCommand ActionTypeld AffectedSopClassUid AffectedSopInstanceUid Attributeldentifiers Convert an MCfile object A fourth form of the constructor creates a new MCdimseMessage object that shares the same MCdataSet object as that contained in a specified file 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 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 identifie
142. e profile along with the data dictionary and message info files is generated from the MergeCOM 3 DICOM Database and should be modified by other 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 MergeCOM 3 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 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 MCdimse
143. e requires you to provide a receiveLogMessage method that will be called by MergeCOM 3 whenever it is logging a message Information about the logged message is passed to the receiveLogMessage method in an instance of the MCloglInfo 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 Refer to the description of addHandler in the NET Assembly Windows Help File for more detailed information about controlling which messages will reach your handler 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 MergeCOM 3 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
144. e_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 11 Services in list SERVICE_1 STANDARD_MR SERVICE_2 STANDARD_CR 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 Services in list SERVICE_1 STUDY_ROOT_FIND SERVICE_2 STUDY_ROOT_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 n
145. eaaeeeeeeaeeeseeaeeeseeneeeeeeaes 48 AUT 48 IVC SCOMV cst se sacs aaa enia enai EAEEREN ETEA EATER AAEE A TAAT EENT EENAA Ea 48 IC SOCIO PAE A EAE E ET E E 49 MEISE caeai a S A EE R A ER 49 aeea a E A EE E 50 le OC 50 DEVELOPING DICOM APPLICATIONS iiseeseeeseesseeseeeereerrsrererrrstrsrrnnerrnerrent 53 Library Import 55 Library Constants oesusiciscrnusidiidrani ari dere ctaeeeviad deed saseesensiedeestideceea deg 55 Exception Handling siirsin a aaa EAEE 55 Library Imitializati TEE 57 Releasing the Iran 58 Getting the Assembly Version cccccscccceeseccceeeseeceeeeeeeceeeeeeneeeeeneeeeeeenenees 58 Releasing Native Memor 58 Using the MergeCOM s log le 59 Capturing Log Messages in Your Application 0 cccceeesseeeeeetteeeeeetteeeeeeaes 60 Registering Your Application ccceeceeeseeeeeeeneeeeeeeneeeeeeaeeeseenaeeeseeneeeeeeaes 60 MCapplication objects can be disposed ssesssrsnrenssesstrnnrensserrrrnnnnnesrens 60 The Application Entity AE Te 61 Association Management Network Onhvy 61 Preparing a Proposed Context List 61 Using a Pre configured Proposed Context Uert 61 Creating Your Own Proposed Context Let 61 Using a Pre configured Transfer Syntax Uiet resres 61 Creating Your Own Transfer Syntax Let 62 Creating Your Own Proposed Context Let 62 MCproposedContext Dropertles ssssssseesete reteset tt trne rrrtttnn nnne srrrtt nnne nnne ent 63 MCproposedContextLi
146. eal 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 MergeCOM 3 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 e SOP Classes e Association Policies o General o Number of Associations o Asynchronous Nature o Implementation Identifying Information e Association Initiation Policy o Activity Description and Sequencing of Activities Proposed Presentation Contexts SOP Specific Conformance for SOP Class es e Association Acceptance Policy o Activity Description and sequencing of Activities Accepted Presentation Contexts SOP Specific Conformance for SOP Class es SOP Classes Application conformance statements specify the DICOM SOPs which are supported by each Application Entity For SCP Entities the initiation of associations Please see the Syste
147. eceeeteneenseseeecneesseeeeeeteneceeensntenneres 84 Construct with a pre populated data Set cccceccececeeeeeeeeceeeeeeeeeeteeenaeees 84 Construct with an empty data set oo ceeeceeeeeeeeeeeseeeeeeeeeeeeeeeseeaeeeeeeaeees 85 Convert an MCdimseMessage object to an MCfile object eee 85 Setting data set VAIUCS acair a A E T A 85 Specifying the filename asasina E ET EEN 86 Constructing Item Objects eee ai a E 86 Get Set item HAME air a a E EE 86 Constructing MCdataSet Objects AA 86 Retrieving Contained Attribute Sets A 87 Using the MCattribute dass 87 Adding Attributes to an Attribute Get 88 Using the MCattributeSet indexer to access MCattribute instances 88 Removing Attributes from an Attribute Get 88 Attribute Properties 2 2 2 0 ccccecccccccececeeeeeeeenaeeeeeeeeeseceaeaeceeeeeeesesnanaeeeeeeeeneeees 89 Assigning Attribute Values from MCattribute cee eeeeeeeseeeeeeenteeeeeeaes 89 Assigning Attribute Values from MCattributeSet snsssnesnneneneee eeren nenene 89 Difference between setValue addValue and indexer n nnnesssnsnnrrrneeea 89 Assigning a NULL attribute value 2 eee eceeeeeeeeneeeeeeeneeeeettaeeeeeenaeeeeeeaaes 90 Assigning a non NULL attribute 2 eee eceeeeeeeeneeeeeeenteeeeeeaeeeeeenaeeeeeenaes 90 Using an MCdataSource class to assign an attribute value eee 92 Retrieving Attribute Values 0 0 0 eceeeeeeete eee etne ee ee enteeeeeeiieeeeeteeeerenieeeertaa 93 Using
148. ed 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 a 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 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 189 REWRITE_CAPTURE_FILES MAX_PENDING_CONNECTIONS TCPIP_DISABLE_NAGLE TCPIP_LISTEN_PORT TCPIP_RECEIVE_BUFFER_SIZE TCPIP_SEND_BUFFER_SIZE TRANSPORT_PARMS TRANSPORT_PARMS TRANSPORT_PARMS TRANSPORT_PARMS TRANSPORT_PARMS TRANSPORT_PARMS 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 unl
149. ed using the explicit VR little endian transfer syntax 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 you from a message stream 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 Retrieve a portion or all of the stream and return it as an MCdata object if errorOccured throw new MCcallbackCannotComplyException MCdimseMessage msg non null referenc MyStreamHandler streamHandler new MyStreamHandler try msg streamIn 0x00080000 Ox0O008FFFF 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 MergeCOM 3 library This call converts only the attributes in group 0008 of the stream supplied by your MyStreamHandler callback class and places the
150. ely 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 eg 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 Or sendResponseMessag 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 Declaring an MCattributeContainer Class The MCattributeContainer interface requires that your container class provide five methods that will be called by the MergeCOM 3 library at different times A sample class declaration follows
151. emplate or 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 reference and Relationship Type is RTYPE For example R INFERRED FROM MergeCOM 3 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 MergeCOM 3 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 MergeCOM 3 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
152. ents 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 The MergeCOM 3 DICOM Toolkit MergeCOM 3 DICOM Toolkit provides a generalized implementation of DICOM in a NET Assembly that you can use with your application This NET version of MergeCOM 3 makes use of the run time library of the MergeCOM 3 C C DICOM Toolkit As such it benefits from the power of that library while providing a complete NET Assembly interface You use methods 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 MergeCOM 3 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 11 DICOM Application Entity Service C lasses Association Part A Negotiation Part 7 Annex D Information Objects Part 3 Data Dictionary Part6 Upper Layer Data Structures and Encoding Part 5 Association Ser
153. eption e System Console Out WriteLine writeFile failed 3 The DICOMDIR file As discussed earlier in each DICOM File Set containing many DICOM files their must exist a single DICOM File with the reserved File ID DICOMDIR This file contains identifying information for the file set that most often includes a directory of the file sets contents A media interchange application would make use of and maintain the DICOMDIR to locate a particular file within the file set for processing Structure A information 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 25 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 fo
154. erenced Study Sequence GO 2 Item Name s REF_STUDY 0008 1125 Referenced Visit Sequence SQ 2 What validation can do for you Item Name s 0010 0010 Patient s Name 0010 0020 Patient ID 0010 0021 Issuer of Patient ID 0010 0030 Patient s Birth Date 0010 0032 Patient s Birth Time 0010 0040 Patient s Sex Enumerated Values M F O 0010 0050 Patient s Insurance Plan Code Sequence Item Name s PATIENTS_INSURANCE_PLAN_CODE 0010 1000 Other Patient IDs 0010 1001 Other Patient Names 0010 1005 Patient s Birth Name 0010 1020 Patient s Size 0010 1040 Patient s Address 0010 1060 Patient s Mother s Birth Name 0010 1080 Military Rank 0010 1081 Branch of Service 0010 1090 Medical Record Locator 0010 2000 Medical Alerts 0010 2110 Contrast Allergies 0010 2150 Country of Residence 0010 2152 Region of Residence 0010 2154 Patient s Telephone Numbers 0010 2160 Ethnic Group 0010 21A0 Smoking Status Enumerated Values YES NO UNKNOWN 0010 21B0 Additional Patient History 0010 21C0 Pregnancy Status Enumerated Values 0001 0002 0003 0004 0010 21D0 Last Menstrual Date 0010 21F0 Patient s Religious Preference 0010 4000 Patient Comments 0038 0004 Referenced Patient Alias Sequence Item Name s REF_PATIENT_ALIAS 0038 0050 Special Needs 0038 0500 Patient State PN LO LO DA TM CS SQ LO PN PN DS LO PN LO LO LO LO LO LO LO SH SH CS LT US DA LO
155. erface requires that your class have a start method that will be passed a newly created MCassociation object When MergeCOM 3 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 MergeCOM 3 will end the thread In this case you must not only supply 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 ge 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 myHand1ler instance is called to process the association Note that in the last two examples we only specified the Application Entity Title of the remote server In this case the Library retrieves three important pieces of information from the information in the Application Profile mergecom app file 1 The list of services to be proposed is obtained from your application s entry in the Application Profile 2 The name of the host the remote server is runni
156. eristics 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 Value Multiplicity MCattributeSet Enumerated values vs defined terms 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 Name VR CS re CS ER VR Name Application Entity Age String Attribute Tag Code String Decimal String Floating Point Single a A single attribute can have multiple values Value Multiplicity defines the number of values an attribute can have VM can be specified as 1 k 1 k or 1 n where kis 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 Floating Point Double Integer String Long String Long Text Other Byte String Other Word String Table 3 DICOM Value Representations VR s Message Handling Given the number of services and commands specified in Tables 1 and 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
157. es 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 MergeCOM 3 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 165 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 itis contained The parameters are listed alphabetically and organized by the initialization file where they are used Initialization File The following parameters are recognized by MergeCOM 3 in the initialization file Section Description BLANK_FILL_LOG_FILE MergeCOM3 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
158. es 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 The following example shows how the readFromXML method is utilized at a high level StreamReader reader new StreamReader myXMLFile MCfile file new MCfile Reading messages MCassociation read Sending messages sendRequestMessage sendResponseMessage file readFromXML reader reader 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 MergeCOM 3 DICOM Toolkit method calls are pictured in Figure 14 Request Message MCdimseService sendRequ
159. es 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 called first to associate this file object with a given DICOM service and command MCfile myFile new MCfile r 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 NOTE The original MCdimseMessage and the new MCfile objects will be sharing the same MCdataSet object String fileName MyFileName MCdimseMessage message a non null referenc myFile new MCfile message fileName Setting data set values If the command
160. essage 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 EI Command Attribute Figure 6 A DICOM Message Object Instance Object Instance Attribute DICOM Data Dictionary Attributes have certain characteristics that apply to them no matter what message they are used in These charact
161. estMessage MCassociation read DICOM DICOM Client Open Association Server MCassociation read MCdimseService sendResponseMessage EG Response Message Figure 14 Message Exchange in MergeCOM 3 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 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 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 113 Requestin
162. eveNegotiation 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 MCcommandSet MCdataSet MCitem MCfileMetalnfo gt DICOM message handling callbacks o Data Sinks MCdataSink interface d MCfileDataSink d d MCmemoryDataSink D Er Er Er 6 o Doooo 0 53 d MCstreamDataSink o Data Sources MCdataSource interface d MCfileDataSource d MCmemoryDataSink MCmemoryDataSink implements the MCdataSink and MCdataSource interfaces d MCstreamDataSource gt DICOM message validation o MCvalidationError o validate and validateAttribute methods of MCdataSet MCfile and MCdimseMessage classes gt DICOM Service class Information o MCsopClass o MCfailedSopInfo o MCrefSopinfo o MCrefStudylnfo gt DICOM Network Service classes MCdimseService o MCbasicWorklistManagementService o MCpatientWVanagementService o MCprintWanagementService o MCqueryRetrieveService o MCqueueManagementService o
163. ewly created directory record When deleting records using deleteChildren or delete no parameters are required When a directory record is deleted all lower level directory entities and the directory records contained within 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 MergeCOM 3 DICOM Toolkit updates and maintains all the byte offsets that are part of the DICOMDIR structure automatically But one important note All the 133 amp Performance Tuning Really It s not a memory leak ss C Performance Tuning setValueFromMethod changes to a DICOMDIR are made in memory and are not committed to media until a writeFile callis made Memory Management The MergeCOM 3 C library contains its 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 MergeCOM 3 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 MergeCOM 3 They
164. file e an API 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 127 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 MCmediaStorageService File System Interface writeFile MCdataSink DICOM Media Application readFile readFileUpToTag readFileBypassLargeData MCdataSource Figure 17 Classes and Methods Used for Handling DICOM Media Files 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 i
165. g a DICOM service Responding to a DICOM service request 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 sendRequestMessage 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 t
166. ge X Ray Angiographic Image Storage X Ray Angiographic Bi plane Image Storage X Ray RadioFluoroscopic Image Storage X Ray Radiation Dose SR Storage 12 lead ECG Waveform Storage Ambulatory ECG Waveform Storage Basic Voice Audio Waveform Storage Cardiac Electrophysiology Waveform Storage General ECG Waveform Storage Hemodynamic Waveform Storage Hanging Protocol Storage Ophthalmic 8 bit Photography Image Storage Ophthalmic 16 bit Photography Image Storage Stereometric Relationship Storage Detached Patient Management 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 GET MCfile Naming DICOM File Sets and File ID s MCdir Detached Visit Management Detached Study Management Detached Study Component Management Detached Results Management Detached Interpretation Management Basic Film Session Basic Film Box Basic Grayscale Image Box Basic Color Image Box Media Storage Directory Storage Table 5 Service Command Pairs Specifying Objects that can be Stored in a DICOM File NOTE MergeCOM 3 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 F
167. gher 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 value 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 157 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 5 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 MergeCOM 3 6 Tam sending 8 bit images with MergeCOM 3 however after sending the data to another system the pixel data is byte swapped incorrectly What is causing this problem The MergeCOM 3 DICOM Toolkit Users Manual contains the section 8 bit Pixel Data page 91 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
168. hat you want spooled to temporary file Note however that this will decrease performance 4 What can be done to increase the performance of the MergeCOM 3 DICOM Toolkit There are several MergeCOM 3 configuration values that impact 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 Hi
169. he library DEFAULT NO EXPORT_GROUP_LENGTHS_TO_NETWORK MESSAGE_PARMS 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 FLATE_GROW_OUTPUT_BUF_SIZE MESSAGE_PARMS 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 FORCE_OPEN_EMPTY_ITEM MESSAGE_PARMS 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 item 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 IGNORE_JPEG_BAD_SUFFIX LARGE_DATA_SIZE LARGE_DATA_STORE MSG_INFO_FILE NULL_TYPE3_VALIDATION OBOW_BUFFER_SIZE PEGASUS_OP_ NAME PEGASUS_OP_ REGISTRATION MESSAGE_PARMS MESSAGE_PARMS MESSAGE_PARMS MESSAGE_PARMS MESSAGE_PARMS MESSAGE_PARMS MESSAGE_PARMS MESSAGE_PARMS 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
170. he MERGE_INI environment variable You must set the MERGE_INI environmental variable to 37 Use MC mclnitialization to provide Initialization File location DICOM AE Title point to the Initialization File This variable can be set within a command shell for example In DOS command shell set MERGE_INI mc3adv merge ini See the Platform notes for your platform if none of these methods apply MergeCOM 3 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 MergeCOM 3 initialization files specifies characteristics of the message error log kept by the DICOM Toolkit library turns particular types of logging on and off and specifies where the messages are logged file screen both or neither In most cases the INFO WARNING and ERROR messages will be sufficient The Tn_MESSAGE settings where nis 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
171. he backslash 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 Ul 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 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 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 10 details which data type may be used with each Value Representation Data Type May be used to set attributes with these VRs MCdate DA MCdateTime DT MCtime TM MCage AS String AE DS IS UI CS LO LT SH ST UT DA DT TM AS
172. hod 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 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 MergeCOM 3 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 MergeCOM 3 id for the negotiated transfer syntax as well as its DICOM Transfer Syntax UID MCitransferSyntax 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 b
173. hotometric MONOCHROME 1 YBR_ICT RGB Interpretation MONOCHROME2 EE Allocated EH Der Pixel Table 18 JPEG 2000 Lossy Supported Photometric Interpretations and Bit Depths The 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 JPEG 2000 Lossless Photometric MONOCHROME 1 YBR_RCT RGB Interpretation MONOCHROME2 Bits Allocated Samples Per 1 3 3 Pixel Table 19 JPEG 2000 Lossless Supported Photometric Interpretations and Bit Depths 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 R2G2Bz2 or Y1Y2B1R1 Y3Y4B3R3 MCtransferSyntax Jpeg2000 and MCtransferSyntax Jpeg2000LosslessOnly will cause a irreversible or reversible color transformation when compressing RGB data The Photometric Interpretation MUST be changed from RGB to 103 You can validate MCdimseMessage MCfile and MCdataSet instances Validate method message Lat can be very useful 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 MCtransferSynt
174. iaStorageService that performs the first two underlined file services That class also implements enhanced read and write functionality for the creation and maintenance of File Management Roles 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 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 DICOM DIR 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 the 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 7 DICOM conformance is described in greater detail in the next section Media Roles Me
175. ibutes i e attributes with tags of the form gggg0000 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 0010 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 information 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 MCapplication myApp non null referenc MCdimseMessage msg a network message just received MCfile fileObj new MCfile msg MyFileName Review what are directory entities directory records DICOMDIR s are ugly But we pretty them up MCdataSink destination new MCfileDataSink fileObj FileName MCmediaStorageService mediaService new MCmediaStorageService myApp try mediaService writeFile fileObj 0 destination catch Exc
176. ice 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 MergeCOM 3 Profile Database Utilities at Merge OEM Unless you are absolutely confident about changes being made DO NOT CHANGE THE CONTENTS OF THIS FILE The Service Profile contains the following sections 191 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 Table 36 Service profile parameters Appendix E XML structure The MergeCOM 3 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 a
177. ild of this directory record e getNextChild This method can be called repeatedly to get subsequent child directory records e getReferencedRecordCount This method traverses all child directory records and returns a count of these records e addChildRecord String newltemName This method adds a child record e delete This method deletes the current directory record within the DICOMDIR e deleteChildren This method deletes all the child directory records below this record The following sections describe these methods and properties in further detail navigating through a DICOMDIR MCdirRecord MCdir Root Adding and deleting directory records dirAddRecord dirDeleteRecord Automatic deletion of referenced items Make sure you are committed 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
178. imeException e DLL Not Found The mclnitialization method allows the Toolkit to perform the following critical processing 57 The dynamic library Is loaded Configuration files located You must be licensed isInitialized Application Domains mcLibraryRelease mcGetVersionString Dispose First the MergeCOM 3 C C toolkit dynamic link library Mergecom Native dll is loaded The NET 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 MergeCOM 3 Data Dictionary or Message info files This could happen if you have not specified or incorrectly specified the DICTIONARY_FILE or MSG_INFO_FILE parameters in the System Profile mergecom pro When this exception is thrown further information on the reason for the exception may 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
179. imited size this parameter s value is ignored DEFAULT 1 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 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 This parameter specifies the TCP IP send buffer size for each connection For optimum perform
180. ing template is taken from the DICOM Part 16 TID 2010 KEY OBJECT SELECTION Type Non Extensible NL Rel with Parent VT Concept Name VM Reg Condition Value Set Type Constraint 1 CONTAI DCID 7010 Key Object 1 M Root node NER Selection Document Titles 2 gt HAS CONCEPT MOD CODE EV 113011 DCM 1 n U Document Title Modifier 3 gt HAS CONCEPT MOD CODE _ EV 113011 DCM 1 UC IF Row1 Concept DCID 7011 Document Title Modifier Name 113001 DCM Rejected for Quality Reasons or 113010 DCM Quality Issue 4 gt HAS CONCEPT MOD CODE _ EV 113011 DCM 1 MC IF Row 1 Concept DCID 7012 Document Title Modifier Name 113013 DCM Best In Set 5 gt HAS CONCEPT MOD INCLUD DTID 1204 Language of 1 U E Content Item and Descendants 6 gt HAS OBS CONTEXT INCLUD DTID 1002 Observer 1 n JU E Context 7 gt CONTAINS TEXT EV 113012 DCM Key J1 U Object Description 8 gt CONTAINS IMAGE Purpose of Reference 1 n MC_JAt least one of Rows shall not be present 8 9 and 10 shall be present 9 gt CONTAINS WAVEF Purpose of Reference 1 n IMC Atleast one of Rows ORM shall not be present 8 9 and 10 shall be present 10 gt CONTAINS COMPO Purpose of Reference 1 n MC_ Atleast one of Rows SITE shall not be present 8 9 and 10 shall be present The code below generates a valid DICOM KO object and illustrates how the template
181. int 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 one 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 MergeCOM 3 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 MyAssocHandler myHandler new MyAssocHandler MCapplication myAE MCapplication getApplication ACME_Query_SCP 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 an
182. ips of Content Items to other Content Items as well as to the Observation Context SR Document 1 Content Item Note A Content Item may contain either Observation Context or other content Figure 19 SR Information Model Each Content Item contains the following A name value pair consisting of e asingle Concept Name Code that is the name of a name value pair or a heading e a value 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 MergeCOM Definition column specifies the enumerated value used in the Toolkit to identify the Content Item Type 139 Table 21 SR Content Item Types Item Type MergeCOM Class Concept Name Description TEXT MCtextltem Type of text e g Free text narrative description of Findings or name of unlimited length May also be used identifier e g to provide a label or identifier Lesion ID value NUM MCnumltem Type of numeric value Numeric value fully qualified by or measurement e g coded representation of the BPD measurement nam
183. is 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 MergeCOM 3 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 An excerpt of message txt follows for the service command pair DETACHED PATIENT MANAGEMENT N_GET_RSP as an illustration 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_PATIENT_MANAGEMENT N_GET_RSP 0008 0005 Specific Character set cs IC Condition EXPANDED_OR_REPLACEMENT_CHARACTER_SET_USED 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 1110 Ref
184. is encoded using the MergeCOM Toolkit functions private MCdataSet CreateKO MCcontentItem item Create a KEY OBJECT DOCUMENT The template ID is 2010 and we used the context ID from the CID 7010 SZ MCsructuredReport sr new MCbasicCodedEntry 113013 Best in Set new MCstructuredReport 2010 MCcontainerItem Continuity SEPARATE DCM Best In Set 149 Skipping Row 2 and 3 of the template and encoding Row 4 The code is taken from the CID 7012 Se 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 ua item new MCtextItem Doctor s comments on selection 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 xy item new MCimageItem new MCsopInstanceReference 1 2 3 4 1 vw E E Ly sr RootItem AddChild item MCrelationshipType CONTAINS Creating a new DataSet MCdataSet dataSet new MCdataSet MCdimseService C_STORE_RQ KEY OBJECT SELECTION DOC
185. is method can be repeatedly called to retrieve each encapsulated frame Note that the compressed data is returned Abstract Message Working with MCabstractMessage Derived Classes Routines The MCabsiractMessage class is an abstract class that implements several MCabstractMessaqe routines that are common between DIMSE messages MCdimseMessage and DICOM files MCfile These routines include compression and validation of attribute sets 99 MCcompression MCstandardCompressor MCstandardDecompressor MCrleCompressor MCrleDecompressor 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 MergeCOM 3 NET MergeCOM 3 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 it implement the MCcompression interface The following example shows how the du
186. is 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 MergeCOM 3 DICOM Toolkit does not use this number in any way 143 Nesting Level NL The nesting level of 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 MergeCOM 3 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 above Relationship Type and Mode may also be specified when another Template is included either top down or bottom up or both e in the INCLUDE Template row of the calling Template or in all rows of the included T
187. ist 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 aset of transfer 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 MCiransferSyntaxList objects representing the transfer syntaxes you want to use for the services The MCtransferSyntaxList class represents a collection of MCiransferSyntax objects Using a Pre configured Transfer Syntax List Again you have the option of creating an MCtransferSyntaxList object based on configuration information or you can create a new transfer syntax list at run time 61 MCsopClass To create an MCtransferSyntaxList object from transfer syntaxes configured in a lt syntax_list_name gt 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 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
188. it to log messages relating to the streaming in and out of messages and file objects T9_MESSAGE MergeCOM3 This logging level parameter informs the toolkit to log messages relating 7 to PDU s sent and received NOTE Receipt and transmission of PPDATA PDU s are logged not the actual PDU itself WARNING_MESSAGE MergeCOM3 This parameter informs the toolkit to log warning messages Table 30 Initialization file parameters 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 description of the application profile can be found in MergeCOM 3 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 167 Section Description lt remote_application_title gt 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 lt service_list_name gt 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
189. ith 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 OBOW_BUFFER_SIZE is used to tell the toolkit what size 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 MSG_INFO_FILE parameter It is often useful to capture the raw data
190. ithin 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 MCattributeSet myAttrSet non null referenc myAttrSet tag attrib attrib myAttrSet 0x00080010 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 removeAt tribute 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 Getting setting The MCattribute class provides three methods to retrieve or set properties of the attribute properties
191. jects and hence object instances defined in DICOM Normalized objects are objects consisting of a single entity in the DICOM information 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 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 Commande 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 DICOM Commands Commands C STORE Transfer an object instance to a remote AE DICOM Description C GET Retrieve object instance s from a remote AE whose attributes
192. l 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 supply 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 MergeCOM 3 provides two sub classes to the MCnegotiationInfo class the MCstorageNegotiation class and the MCqueryRetrieveNegotiation class Refer to the MergeCOM 3 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 MCnegotiation Info 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 Starting an Association Requester If your application wi
193. le prompting for correct service command pairs t 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 mc3file Sample DICOM messages can be generated with the mc3file utility You specify the service command and transfer syntax and mc3file generates a reasonable sample message that is written to a binary file The contents of this file are generated
194. lication and limit interoperability If you are significantly extending services or creating your own private services you may need the MergeCOM 3 DICOM Toolkit Extended Toolkit to assist in defining these services so that they can be supported by the toolkit MERGE_INI environmental variable needed only by utility programs Using the MergeCOM 3 DICOM Toolkit You can use the MergeCOM 3 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 MergeCOM 3 NET Assembly Configuration MergeCOWM 3 is highly configurable and understanding its configuration files is critical to using the library effectively Four configuration files are used by MergeCOM 3 an initialization file an application profile a system profile and a service profile The pound sign begins comment lines Section Header Set HEADER1 PARAMETER_1 Section Parameters PARAMETER_2 PARAMETER_3 12345 This is some text 1 2 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 a
195. ll 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 following 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 65 Processing the association in the another thread MCassociation DEFAULT is to proposed the services defined in mergecom app remoteApp The getObject static method of MCremoteApplication allows you to load configuration information about the remote application from the Application profile It is also possible to use the constructor from MCremoteApplication to supply all of the connection information for the remote application See the MergeCOM 3 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 int
196. ltiple rows of a Template table The following abbreviations are used e XOR Exclusive OR One and only one row shall be selected from mutually exclusive 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 e IFE 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 mandat
197. ly 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 Number of Services SERVICE_1 STUDY_ROOT_OQR_FIND EXT NEG _INFO_1 0x01 SERVICE_2 STUDY_ROOT_OQR_ MOVE EXT NEG INFO 3 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 Related 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 su
198. m Profile section in ANNEX B CONFIGURATION PARAMETERS and the MC_Wait_For_Association or MC_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 MergeCOM 3 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 MergeCOM 3 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 file under the following keys IMPLEMENTATION _CLASS_UID IMPLEMENTATION_VERSION This UID must follow the syntax rules specified in Part 5 of the DICOM standard
199. m 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 retrieving pixel data Namely your settings of LARGE_DATA_STORE and OBOW_BUFFER_SIZE should take into consideration the capabilities of your platform Re The same kind of performance issues apply in the callback classes discussed when 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 a compact and reproducible representation of a message You can directly Why use message streams 111 Converting message data to an XML string writeToXML method Converting an XML string into a message readFromXML method examine the binary 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 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 MCabstractMes
200. m into an attribute of Value Representation SQ treat the attribute sequence 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 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 message objects MCfile MCdir MCfileMetalnfo Several ways to construct file objects Populating the file with a service s attributes 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 MCfile 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
201. 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 object instances are referred to as SOP Instances or managed SOP s in the DICOM standard 3 commands are referred to as DIMSE Services in the DICOM Standard 21 Where your application takes over Request vs response IMPORTANT MCassciation Commands 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 EVENT REPORT Report an event to a remote AE DICOM Description N DELETE Request that a remote AE delete an existing object instance Table 2 DICOM Commands These DICOM commands can be thought of as primitives that every networking 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 For every command there is both a request and a response A command request indicates that a command should be performed and is usually sen
202. mation 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 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 SR These IODs use the same method to encode data but differ in constrains on the Content Item Types and their relationships Figure 18 illustrates the typical SR Document s
203. method returns 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 135 Performance Tuning Read streamOut 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 MergeCOM 3 in any length as required by the user s application The data is typically read from disk at this point and directly passed to MergeCOM 3 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 MergeCOM 3 The complete image file can be reassembled later using MergeCOM 3 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
204. 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 file disables this checking 3 What can be done to reduce the memory requirements of the MergeCOM 3 DICOM Toolkit There are several methods for reducing the memory requirements of MergeCOM 3 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 There are several configuration values that reduce MergeCOM 3 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 MergeCOM 3 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 t
205. mmand cannot be found in the message file a warning will be displayed but the message will still be listed 49 DICOM Message Validation tool limitations DICOM Message Generation Tool 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 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 lt filename gt w i s lt serv gt c lt cmd gt 1 m q t lt syntax gt lt filename gt Filename containing message to validate e Display error messages only w Display error and warning messages default a Display informational error and warning messages s lt serv gt Optional force the message to be validated against service name serv used along with c c lt cmd gt Optional force the message to be validated against command name cmd used along with S r 5 1 Optional list and select possible service command pairs m Optional specify the input file as being a DICOM file object q Optional disab
206. mmandSet 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 contained 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 The tag that identifies the attribute the Tag property e The DICOM Value Representation for the attribute the ValueRepresentation property e The values of the attribute e The keyword of the attribute 87 Adding attributes to the set Getting an MCatiribute from an atiribute set Removing a s
207. mography CAD SR X Ray Radiation Dose SR Encapsulated PDF Storage Procedure Log Storage Grayscale Softcopy Presentation State Storage Blending Softcopy Presentation State Storage Color Softcopy Presentation State Storage Pseudo Color Softcopy Presentation State Storage 12 lead ECG Waveform Storage Ambulatory ECG Waveform Storage Basic Voice Audio Waveform Storage Cardiac Electrophysiology Waveform Storage General ECG Waveform Storage Hemodynamic Waveform Storage Ophthalmic 8 bit Photography Image Storage Ophthalmic 16 bit Photography Image Storage Stereometric Relationship Storage Real World Value Mapping Storage MCstorageCommitment Savica Storage Storage Commitment Push Ensures that SOP Instances Commitment stored with the storage Storage Commitment Pull service class will not be deleted after reception but will be stored safely and can be retrieved again at a later point MCmediaStorageService Media Storage DICOM Basic Directory Storage Exists as a member of every DICOM File Set and contains and storage of various italicized general information about the services from the other Service file set and a hierarchical Classes directory of the DICOM files contained in the file set RIGHUSEYREIE eRe N ICH Query Retrieve Patient Root Find Management of images Patient Root Move through a query and retrieval 19 MCbasicWorklist ManagementService MCprintManagement Service McstudyContentNotification
208. mple service list that has transfer syntaxes specified for each service Storage_Service_List SERVICES _SUPPORTED 3 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 Number of Syntaxes SYNTAX_1 JPEG BASELINE SYNTAX_2 EXPLICIT _BIG_ENDIAN SYNTAX_3 EXPLICIT_LITTLE_ENDIAN SYNTAX_4 IMPLICI LITTLE _ENDIAN US_Syntax_List SYNTAXES_ SUPPORTED 2 Number of Syntaxes SYNTAX_1 RLE SYNTAX_2 IMPLICIT_LITTLE_ENDIAN CT_Syntax_List SYNTAXES_SUPPORTED 2 Number of Syntaxes SYNTAX_1 EXPLICIT_LI iE ENDIAN SYNTAX_2 IMPLICI LITTLE END AN Storage_Service_List lists some standard storage service class services used by MergeCOM 3 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 negoti
209. mplements 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 MergeCOM 3 store the value Capplication myApp non null referenc Cfile fileObj new MCfile FileName CdataSource source new MCfileDataSource fileObj FileName CmediaStorageService service new MCmediaStorageService myApp try service readFile fileObj source catch Exception e Pass OB OW OL data offset and length only to registered callbacks if any readFileBypassLarqeDat Read only up to the Pixel Data readFileUpToTag e readFileBypassLargeData This method reads the file just as the readFile method does with one exception If the stream contains an attribute for which an MCattributeContainer instance has been registered the attribute s value is NOT passed on to the MCattributeContainer but instead the values length and offset into the file is passed to the receiveMediaDataLength method of the MCattributeContainer This provides the opportunity fo
210. n 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 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 PDU size The maximum PDU size is configurable with a minimum of 4 096 byt
211. n 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 MergeCOM 3 Assembly is important to developing an efficient 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 other sample applications Sample Media App Sample Q R App Sample Store App DICOM Application Cedara s Message Info Database and Data Dictionary Config MERGE INI MergeCOM 3 MERGECOM PRO Advanced NET Library MERGECOM APP binary MERGECOM SRV files Interchangeable Media Component 8 E SS optional Cc Merge DICOM Database Ty Maintenance Tools and Manual Figure 3 MergeCOM 3 DICOM Toolkit Library Organization 13 KZ Performance Tuning The sample applications can be a big help MergeCOM 3 C C DICOM Toolkit Dynamic Library The MergeCOM 3 C C DICOM Toolkit Dynamic Library usually named Mergecom Native dll for the MergeCOM 3
212. n the LARGE_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 MergeCOM 3 also supplies 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 MergeCOM 3 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 be used First it can be used to seamlessly replace MergeCOM 3 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
213. nd attributes with VR UN lt xml vers lt DcemFile gt ion lt FileMetaInfo lt Attri bute 0 encoding utf 8 gt Service STANDARD_SEC_ Tag 00020001 VR 0B Version Length 2 gt AAE lt Attribute gt lt Attri UID Lengt lt Attri UID Lengt lt Attri Length 19 lt Attri lt Attri Length 24 lt Attri Length 25 lt Attri lt Attri lt Attri lt Attri UID Lengt nstance U bute h 25 bute 1 h 29 bute 1 bute Title Length lt FileMetaInfo gt lt DataSet Service STANDARD_SEC_CAPTURE Command C_STORE_RQ TransferSyntax bute bute bute Length 8 gt 20020717 lt Attribute gt bute bute leZ DS Tag 00020002 VR UI gt lt Attribute gt Tag 00020003 VR UI gt lt Attribute gt Tag 00020010 VR UI 840 10008 1 2 1 lt Attri CAPTURE Command C_STORE_RQ Name File Meta Information Name Media Storage SOP Class gt Name Media Storage SOP Instance Name Transfer Syntax UID bute gt Tag 00020016 VR AE Name Source Application Entity 5 gt MERGE_STORE_SCP lt At W1 2 840 10008 1 2 1 gt Tag 00080008 VR CS rag 00080016 VR UI 840 10008 5 1 4 1 1 7 lt Tag 00080020 VR DA rag 00080030 VR IM Length 6 gt 123429 lt Attribute gt Tag 00080060 VR CS Length 2 gt 0T lt Attribute gt bute Tp rag 00081111 VR SQ Procedure Step Seq
214. nding to a C STORE request message the responseMsg would be constructed as follows responseMsg new MCdimseMessage MCdimseService C_STORE_RSP requestMsg ServiceName j 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 the MCdimseService class If responseMsg is not provided MergeCOM 3 will create one automatically Some DICOM services require that values for certain command set attributes i e group 0 attributes be set MergeCOM 3 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 The group length attribute 0000 0000 value is always set by MergeCOM 3 e If the 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 MergeCOM 3 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 MergeCOM 3 115 Attribute values can be stored in your own container
215. ng on is obtained from the remote application entity s entry in the Application Profile 3 The TCP IP port number the remote server is listening on is obtained 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 Association startup for a server application MCacceptor MCassociation NOTE the widely known DICOM listen port is 104 and process requests from remote DICOM Application Entities that wish to start an association with your local Application Entity MergeCOM 3 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 MergeCOM 3 calls the start method of your MCacceptor class instance to process the association passing ita 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 IPEndPo
216. ng the collection for network transfer or for writing a DICOM file myFile removeFileValues File validation 125 Data Set Validation validate validateAttribute How big is the file stream streamLength The transfer syntax UID TransferSyntax property The file s name FileName property 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 reference bool validates validates myFile validateAttribute MCdicom PATIENTS_NAME MCvalidateLevel Errors_Only if validates MCvalidationError err myFile 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 101 The MCfile stream MergeCOM 3 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 befor
217. o 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 ina single call or in several smaller chunks When passed data the library will 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 MergeCOM 3 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 MergeCOM 3 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 This can be tricky E Performance Tuning getValueToMethod setValueFromMethod Performance Tuning read sendRequestMessage The library can also be directed to store data in temporary files The LARGE_DATA_STORE and LARGE_DATA_SIZE configuration options in the mergecom pro file dictate when data is stored in temporary files Whe
218. o access configuration information that describes the attributes of the message If the itemName is unknown to MergeCOM 3 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 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 MCdimseMessage class contain a command set object MCcommandSet and an MCdataSet object The 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 MergeCOM 3 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
219. o 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 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 17 MCverificationService MCstorageService Service Class Verification Storage Services Description Verification Verifies application level communication between DICOM application entities AE s Computed Radiography Image Transfer of medical images Storage and related standalone data CT Image Storage between DICOM application Enhanced CT Image Storage entities either over a MR Image Storage network or using Enhanced MR Image Storage interchangeable media MR Spectroscopy Storage Spatial Registration Storage Spatial Fiducials Storage Hardcopy Color Image Storage Hardcopy Grayscale Image Storage Stored Print Storage Ultrasound Image Storage Ultrasound Multi frame Image Storage Nuclear Medicine Image Storage Positron Emission Tomography Image Storage Positron Emission Tomography Curve Storage Digital X Ray Image Storage For Presentation Digital X Ray
220. o 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 41y 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 041yY There is also one other error 107 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 the 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 Message Object Construction Point at which file access overhead Method new MCdimseMessage if command service supplied new MCdimseMessage if no command service supplied new MCdimseMessage MCdataSet if command service supplied when constructing MCdataSe
221. o 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 MergeCOM 3 which meta service to use when sending the message Using the sendResponseMessage method There are two forms of the MCdimseService sendResponseMessage method public void 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 MergeCOM 3 handles the command set for you 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 eg 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 respo
222. ociation 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 The Remote Host s Name and Address MergeCOM 3 applications communicate with each other using TCP IP The RemoteHostName 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 true if this MCassociation object represents 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 as
223. on 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 the 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 MergeCOM 3 toolkit to not export attributes encoded as UN VR to the network SCP application strategy 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 MergeCOM 3 toolkit 155 Performance Tuning Appendix A Frequently Asked Questions This appendix lists some frequently asked questions by toolkit users 1 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 MergeCOM 3 allows the placement of environment variables in these pathnames This allows setting of a root direc
224. onse 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 DataSet and Metalnfo properties Normally you will only deal with the data set and the file meta information attributes will be set automatically by MergeCOM 3 Remember Service and command are needed to validate the data set When you want to save a network message ina DICOM media file MCfile myFile ushort command MCdimseService C_STORE_RQ String serviceName STANDARD_CT myFile new MCfile command serviceName or String file MyFileName myFile new MCfile file command serviceName serviceName and command are used to access configuration information that describ
225. opClassUid MOTE 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 Read messages using MCassociation read 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 At any time either association partner may abort the association This is used only in abnormal situations assoc abort Af
226. or 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 COMPRESSION_LUM_FACTOR MESSAGE_PARMS 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 COMPRESSION_CHROM_FACTOR MESSAGE_PARMS 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 183 COMPRESSION_ALLOW_FRAGS MESSAGE_PARMS COMPRESSION_WHEN_J2K_USE_LOSSY MESSAGE_PARMS COMPRESSION_J2K_LOSSY_RATIO MESSAGE_PARMS COMPRESSION_J2K_LOSSY_QUALITY MESSAGE_PARMS COMPRESSION_J2K_LOSSY_USE_QUALITY MESSAGE_PARMS COMPRESSION_RGB_TRANSFORM_FORMAT MESSAGE_PARMS CREATE_OFFSET_TABLE MESSAGE_PARMS DEFAULT 32 Configuration Parameter for MC_Standard_Compressor The Pegasus libraries allow compressed image data to be returned as it continues
227. orMessagelId property gets or sets that value from attribute 0000 1031 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 83 RemainingSubOperations RequestedSopClassUid RequestedSopInstanceUid ResponseStatus WarningSubOperations MCfile Get the contained attribute sets with getDataSet getMetalnfo 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 associated with a particular operation in the request and response messages The RequestedSopClassUid property sets or gets this Requested 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 Requested 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 resp
228. orm 1 2 840 xxxxx but are currently assigned using the form lt root gt 2 16 840 1 10008 Where of course 10008 is the organization ID 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 159 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 3
229. ory or conditional is specified in the Requirement and Condition fields The number of times the included Template may be repeated is specified 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 Overview of the MergeCOM SR Classes MCserializableToDataSet C MCserializableToDataSet F Rootltem 8 ContentitemType ti Methods it Nested Types A NodeName A ObservationDate OF Parent OF References Methods o MCrelationshipType oF RelationshipType Enum IS CONTAINS HAS_OBS CONTEXT HAS_ACQ_CONTEXT HAS CONCEPT MOD nie PROPERTIES INFERRED_FROM SELECTED_FROM UNDEFINED ti Fields 3 Properties gt ContentitemType 5 ContinukyotCont 3 rma F Templeteld Methods Methads ti Nested Types 9 ContentitemType 9 PersonName Methods MCtextitem D D MCtemporalCoordinatesit E MCcompositeltem Class Abstract Class Chass Cass MCcontantitam gt MCcontantitam D MCcontentitem gt MCcontentttem F Fields Fields Properties j Properties E ContenthemType 5 ContenttemType oF RangeType F Text 9 Time H RangeTypestring ti Methods Methads Methads a Fields 2 Fields i Prope
230. ote 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 A default string encoder is implemented that will convert between Unicode and 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 is described further in the following section The set Value may also be used to set values for attributes of types SL SS UL US AT FL and FD 91 Supplying pixel data MCdataSource provideData method MCdata class MCcallbackCannotCompl yException setValue 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 OF e g Pixel Data you can create a class that implements the MCdataSource interface and then call setValue MCdataSource uint method of MCattribute to assign the attribute s value Pixel Data can be very large and you can use this method to supply the data value a chunk or block at a time The callback class you provide must provide a provideData method that is called by the librar
231. pecific attribute from the set 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 add method of MCattributeSet the attribute to be added can be identified by 1 an uint reference or 2 by an MCtag reference 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 MCnot StandardElementException will be thrown Using the MCattributeSet indexer to access MCattribute instances The MCattributeSet contains a number of indexers for access attributes and values w
232. plicate 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 MergeCOM 3 and how they must be utilized with MCabstractMessage duplicate MergeCOM 3 Supplied Compressors and Decompressors MergeCOM 3 supplies several implementations of compressors and decompressors The following table lists each of the MergeCOM 3 classes if they implement compression or decompression and what transfer syntaxes they support MergeCOM 3 Class 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 RLE Pegasus Licenses are required to remove speed limitations MergeCOM 3 Class Type DICOM Transfer Syntaxes Supported MCstandardDecompressor Decompressor JPEG Baseline
233. plicating to an encapsulated transfer syntax this configuration value specifies whether an ICON IMAGE SEQUENCE should also be encapsulated ELIMINATE_ITEM_REFERENCES MESSAGE_PARMS This parameter specifies the behavior of the removeMessageValues MCdimseMessag e 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 185 DEFAULT YES EMPTY_PRIVATE_CREATOR_CODES MESSAGE_PARMS If set to NO private creator codes contained in attribute sets are not emptied when the removeFileValues or removeMessageValues method calls are made DEFAULT YES EXPORT_PRIVATE_ATTRIBUTES_TO_NETWO MESSAGE_PARMS When set to NO disable the exporting of RK private attributes in messages written to the network with the sendRequestMessage or sendResponseMessage methods DEFAULT YES EXPORT_UN_VR_TO_NETWORK MESSAGE_PARMS 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 EXPORT UNDEEINED LENGTH SO MESSAGE_PARMS If YES messages transferred over the network or written to disk have their sequence attributes encoded as undefined length This increases performance of t
234. pports all storage service class SOP Classes that are proposed to it 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_SUPPORTED 2 SERVICE_1 STANDARD_ENHANCED_SR SERVICE_2 STANDARD_COMPREHENSIVE_SR SCU_DX_General ERVICES SUPPORTED 1 SERVICE_1 STANDARD_DX_PRESENT wn d 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_PRESENT 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 ca
235. r each exception MCexception subclass MCalreadyExistsException exceptionNumber property ALREADY_EXISTS MCalready lnitializedException ALREADY_INITIALIZED_EXCEPTION MCalreadyListeningException ALREADY_LISTENING MCassociationAbortedException ASSOCIATION_ABORTED MCassociationRejectedException ASSOCIATION_REJECTED MCassociationReleasedStatus ASSOCIATION_RELEASED MCattributeNotFoundException ATTRIBUTE_NOT_FOUND MCcallbackCannotComplyException CALLBACK_CANNOT_COMPLY MCcallbackInvalidArgumentException CALLBACK_INVALID_ARGUMENT MCconfigFileErrorException CONFIG_INFO_ERROR MCconfigurationError CONFIGURATION_ERROR MCconnectionFailedException CONNECTION_FAILED MCdicomdirException DICOMDIR_ERROR MCdisposedException OBJECT_DISPOSED MCillegalArgumentException ILLEGAL_ARGUMENT_EXCEPTION MCinactivityTimeoutException NETWORK_INACTIVITY_TIMEOUT MCincompatibleValueException INCOMPATIBLE_VALUE MCinvalidEncodingWarning INVALID_ CHARS_IN_VALUE MCinvalidEncodingException INVALID_DIMSE_COMMAND MCinvalidDirRecordTypeException INVALID_DIR_RECORD_TYPE MCinvalidLicenselnfoError INVALID_LICENSE MCinvalidMessageReceivedException INVALID_ MESSAGE_RECEIVED MCexception subclass MCinvalidTransferSyntaxException exceptionNumber property INVALID_TRANSFER_SYNTAX MClostConnectionException
236. r of the file preamble and object instance is encoded using tagged attributes as in a DICOM Message 27 DICOM objects that canbe The object instances that can be stored within the DICOM file are equivalent to a written to media 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 DICOM Services Classes and their Component Services 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 Service Command Pseudo Color Softcopy Presentation State Storage Hardcopy Color Image Storage Hardcopy Grayscale Image Storage Key Object Selection Document Mammography CAD SR MR Image Storage MR Spectroscopy Storage Multi frame Grayscale Byte Secondary Capture Image Storage
237. r substantial performance improvement Note that if no MCattributeContainer is registered for the OB OW OF attribute the attribute s value will be stored by MergeCOM 3 as usual Capplication myApp non null referenc Cfile fileObj new MCfile FileName CdataSource source new MCfileDataSource fileObj FileName CmediaStorageService service new MCmediaStorageService myApp try service readFileBypassLargeData fileObj source catch Exception e e readFileUpToTag This method retrieves the values of the file stream just as the readFile method does but it will stop requesting data when it has 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 It is 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 129 writeFile DICOM allows you to pad the file MergeCOM 3 assures accurate group lengths
238. r 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 25 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 well 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 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 Fortunately the MergeCOM 3 DICOM Toolkit supplies methods that make DICOMDIR maintenance much simpler for your application These methods are now described 131 MCdir extends the MCfile class MCdir Directory record
239. r time A number of tools are included with MergeCOM 3 NET C DICOM Toolkit for maintaining the data dictionary A Message Database Manual is distributed with Read Me FIRST Assembly Reference Extension DB Manual Sample Margin Note ClassName Perform MergeCOM 3 and describes the use of these tools This manual describes the use of the various tools and text files supplied with MergeCOM 3 Users can add definitions for private services and private attributes Please reference this manual for further information on extending the MergeCOM 3 data dictionary Documentation Roadmap The MergeCOM 3 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 NET 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 MergeCOM 3 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 MergeCOM 3 DICOM Database and how to use it to extend standar
240. rameters 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 it in the ASSOC_PARMS section as follows Dealing with large data ASSOC_PARMS LICENSE 83F3 3F26 FD6E IMPLEMENTATION_CLASS_UID 2 16 840 1 113669 2 1 2 IMP LEMENTATION_VERSION MergeCOM3_361 ACCEPT_MUTLPLE_PRES_CONTEXTS 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 MergeCOM 3 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
241. rchange 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 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 file and includes important identifying information about the encapsulated object instance and its encoding within the file Figure 7 File Preamble 128 byte optional extra padding attribute FFFC FFFC Four byte DICOM Prefix DICM Each attribute identified by a Tag LLL SR ee ee Kies File Meta Object Instance Fa a A Byte Stream We Optional Padding Attribute EI 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 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 remainde
242. re 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 Initialization File The MergeCOM 3 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 MergeCOM 3 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 MergeCOM 3 DICOM Toolkit The C utility programs access the merge ini file by accessing t
243. 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 0 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 vrSH vrST vr TM vrUT vrUl vrSS vrUS vrAT 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 nspecified mspecified Value Multiplicity is no no 1 many no upper limit yes no must have exactly n values yes yes n m at least n values no more than m values Use Short MAX_VALUE 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
244. roposed transfer syntaxes 69 Transfer Syntax Lists for SCUs As previously discussed the abstract and transfer syntaxes supported by a server SCP are defined through a service list contained in the MergeCOM 3 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 The presentation contexts supported for client SCU applications using MergeCOM 3 are also defined through the MergeCOM 3 Application Profile The following is a typical client s SCU configuration Acme_Store_SCP
245. rties i Properties 9 ComentitemType AT ComentitemType 8 Qualifier AP SopReterence z Methods MCtemporalCoordPositionsit 2 MCtemporalCoordTimeOftsct 2 Class Chess b MCtemporalCoordinatesitem gt MCtenporaKcordinatesltem MCimageltem Chass MCcompasiteltem iti Fields t Properties ti Fields it Fields z Properties Properties S ContentitemtType 8 ContentitemType 8 ContentitemType SF ReferencedSamplePositions 8 ReferancedTimedftsets SP ReferencedOateTime F Methods E Methods E Methods gt ContentitemType A ReferencedFrames SF ContentitemType gt ReferencedRealworkivm E Methods ReferencedSegments ReferencedSps WH Methods Nested Types Figure 21 SR Class Diagram 147 Extending Toolkit Classes In Figure 22 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 item 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 MergeCOM 3 DICOM Toolkit allows you to extend existing Content Item classe
246. s a lt root gt and a lt suffix gt and has the following form UID lt root 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 lt root gt component of the UID stays constant the lt suffix gt 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 lt suffix gt For example using the UID above lt root gt 1 2 840 10008 and lt suffix gt 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 lt root gt 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 lt root gt structure Therefore new UIDs from ANSI will no longer be of the f
247. s 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 ActionTypelId property can be used to get or set the Action Type ID that was specified in the DIMSE message This for attribute 0000 1008 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 DIMSE services using N GET operations use a command se
248. s 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 the Table 21 The class factory is implemented in the MCstructuredReport class and can be updated by calling the following function public void UpdatelItemFactory 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 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 Key Object Selection Example The Key Object Selection document is constrained by a single template The follow
249. sage 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 writer new StreamWriter myFile convert DICOM file to an XML file myFile writeToXML writer xmlOptions ji 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 0x1 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 XmlOptBase 4Binary 0x10 XML to Message conversion The MCabstractMessage provides a readFromXML method that can be utilized to read attribute valu
250. se the UID for the Storage Service Class as defined in Supplement 90 is used 43 Nothing works without the license number The service lists above are only utilized by SCU applications For SCP applications there are several configuration options that define how MergeCOM 3 will negotiate an association when related general SOP Classes are included or the Service Class is included for a SOP Class When the ACCEPT_STORAGE_SERVICE_CONTEXTS configuration option is set to Yes MergeCOM 3 will accept any proposed SOP class that is defined as supporting the Storage Service Class When the ACCEPT_RELATED_GENERAL_SERVICES configuration option is set to Yes MergeCOM 3 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 System Profile The MergeCOM 3 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 MergeCOM 3 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 for a discussion of all parameters see System Profile in Appendix D Configuration Pa
251. se you may want your callback class to supply the Pixel Data in fewer big blocks or one large block MergeCOM 3 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 1I0 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 also 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 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
252. 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 MCproposedContextList list This method call is treated as a no op if no negotiation information is registered for the service The setNegotiationInfo method is used to provide extended negotiation information for one or more services in the list The extended negotiation information will be used during association negotiation by MergeCOM 3 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 nul1 pointer or an empty byte array is provided by the toByteArray method this call is treated as if it were a 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 MCproposedContext object from those encapsulated in the proposed
253. sociation 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 MergeCOM 3 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 MergeCOM 3 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 75 BaseClasses Commands Name Number Uid BaseClass MetaClass Equals The MCsopClass has the following get methods BaseClasses Commands Name Number Uid BaseClass MetaClass plus an overridden Equals method See the sample code below MCsopClass sopl MCsopClass getSopClassByUid 1 2 840 10008 5 1 1 17 MCsopClass sop2 MCsopClass getSopClassByName BASIC_FILM_SESSION HW H o C S sopl Uid equals sop2 Sys Sys Sys Sys tem Console Out Wri sop1
254. sociation when it 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 Association Requested Association Accepted 3 ASSOCIATION 4 Association Released Figure 5 A Successful DICOM Association 23 MCdimseMessage MCcommandSet MCdataSet MCitem MCfile MCdir MCsopClass MCattributeSet MCattribute MCdataElement MCtag MCdicom MCtag GroupNumber MCtag ElementNumber Value Representation MCvr Messages Once an association is established services are performed by AE s through the exchange of DICOM Messages A message is the combination of a DICOM command request or response and its associated object instance see Figure 6 Messages containing command requests will be referred to as request messages while messages containing command responses will be referred to as response messages When a DICOM service is stored to interchangeable media in a DICOM File the 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 DICOM specifies the required message structure for each service command pair For example the Patient Root Find C FIND RQ service command pair has a specific m
255. sr RootItem Children 0 MCcodeItem codeItem s Console Write codeItem Console WriteLine code cod Reading the next childre if sr RootItem Children 1 MCtextItem textItem s Console Write textItem Console WriteLine text textiIt Reading the next childre if sr RootItem Children 2 MCimageItem imageItem Id sr RootItem Templateld en as a CODE item is MCcodeItem r RootItem Children 0 as MCcodeItem ContentItemType Di tem ConceptName CodeMeaning eItem Code CodeMeaning n as a TEXT item is MCtextItem r RootItem Children 1 as MCtextItem ContentiItemType Di tem ConceptName CodeMeaning em Text n as a IMAGE item is MCimageItem sr RootItem Children 2 as MCimagelItem Console Write imageItem ContentItemType Console WriteLine Sop imageItem SopRefe Sop Instance imageItem SopRefe Classe P 4 rence ReferencedSopClassUid g A rence ReferencedSopInstanceUid 151 Deploying Applications There are several issues to consider when deploying a MergeCOM 3 based application These include deciding which MergeCOM 3 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 MergeCOM 3 Required Files There are a number of files required by MergeCOM 3 appli
256. ss 17 amp 19 transfer syntax 177 JPEG_SPEC_HIER_20_22 SYNTAX ASSOC_PARMS 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 JPEG_SPEC_HIER_21_23 SYNTAX ASSOC_PARMS 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 JPEG_FULL_PROG_HIER_24 26 SYNTAX ASSOC_PARMS 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 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
257. ssages specify NO DEFAULT NO SEND_RECOGNITION_CODE t DIMSE_PARMS 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 SEND RESPONSE PRIORITY t DIMSE_PARMS 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 SEND_SOP_CLASS_UID t DIMSE_PARMS 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 SEND_SOP_INSTANCE_UID DIMSE_PARMS 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 that Affected SOP instance UID is present specify YES DEFAULT YES ARTIM_TIMEOUT DUL_PARMS 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 ASSOC_REPLY_TIMEOUT DUL_PARMS The number of seconds to wait for a reply to an associate request DEFAULT 15 CONNECT_TIMEOUT DUL_PARMS The number of
258. st properties eccccccccceceeeeeeeeneceeeeeeeeeeeeenaaeeeeees 63 MCresultContext properties cccccccceceeeeeeeeeceeeeeeeeeeecceeeeeeeeeeesensieaeeeeees 64 MCtransferSyntax properties c ccccceceeeeeceecceeeeeeeeeeecnaeeeeeeeeeeeeecnaeaeeeeees 64 MCtransferSyntaxList properties ccceccceecceceeeeeeeeeenneeeeeeeeesesenneeeeeeeees 65 Using Extended Negotiation Information ccccccceeeeeeeeteeeeeeeteeeereneeeeeeee 65 Starting an Association Requester ceecceeeceeeeeeeeeeneeeeteeeeeeseeaeeeseenatees 65 Starting an Association ACceptbor cee ccceeeceeeeseeeeeeeeeeneeeeseeeeeeteeaeeeseeanees 66 Accepting or Rejecting the Association eee ceceeeeteeeeeenteeeeeetteeeeeenteeeeenaes 68 Negotiated Transfer Syntaxes 0 cececeeeteeeeeeeeeeeeeeeneeeeeeeeeeeteieeeertieeeeeeed 69 MergeCOM 3 Message Classes c cccecccceeeeeeeeeeeeeneeeeeteneeeeetieeeertieeeenend 71 Association Message Handling ccccccceceeseeeeceeteeeeeeesneeeeeeneeeeeenaeeeeeeaes 72 Releasing or Aborting the Aesoclatton ce eeeceeeeeteeeeeeeteeeeettteeeettnieeeeeeee 73 Association Properties ierse aara a a eede a ataenda eani nra 73 Application Context Name ccccceceeeeeeceeceeeeeeeeeceneaeeeeeeeeeseccuaeeeeeeeseneees 74 TGPAP ktisten Ponarejena a e AE tt entire 74 MCapplication object of the local AE 74 Application Entity Tithe iing iaasa a ai aa aaite 74 Implementation
259. 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 0 7 0 ByteO M Pixel 2 L ByteO M Pixel 1 L Byte1 M xg L Byte Iva Pixe2 L Byte2 M Pixd A L Byte2 M Pixel3 L 7 Byte3 M Pixel3 L Byte3 M Pixl4 L Byte4 M Pixd 6 L Byte4 M Pixd 5 L Byte5 M FPixed5 L Byte5 M Pixel6 L e e e Big Endian M achines Little Endian M achines 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 least 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 Encapsulated Pixel Data Handling Compressed MergeCOM 3 DICOM Toolkit supports the DICOM encapsulated transfer syntaxes Data The method for compression and decompression JPEG RLE etc of encapsulated pixel data is specified in part 5 of the DICOM standard MergeCOM 3 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 synta
260. t new MCdimseMessage MCdataSet if no command service supplied when constructing MCdataSet MCdimseMessage read MCassociation for validation occurs new MCdimseMessage MCdimseMessage validate Note You must use setServiceCommand method before validating and or sending a message created in this manner new MCdataSet MCdimseMessage validate MCdimseMessage validate 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 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 new MCdataSet Performance Tuning validateAttribute Message stream defined Message Object Construction Point at which file access overhead Method for validation occurs If command service supplied new MCdataSet MCdataSet validate If no command service supplied Table 20 Point of performance overhead associated with attribute set validation 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
261. t VR format DEFAULT YES When set to YES MergeCOM 3 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 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 SEND_MSG _ID_ RESPONSE DIMSE_PARMS The DICOM standard 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 me
262. t 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 CompletedSubOperations ErrorComment Errorld EventTypeld FailedSubOperations Messageld MessageldBeingRespondedTo MessagePriority MoveDestination MoveOriginator MoveOriginatorMessageld OffendingElements 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 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 TypeTd property sets or gets the Event Type ID from the command set for attribute 0000 1002 The DIMSE services that
263. t 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 XmlOptBase 64Binary 0x10 97 XML to Attribute set conversion readFromXML Swapping pixel data bytes Swap Method 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 VRis specified as being OW independent of what the bits allocated and bits stored attributes are set to To reduce confusion MergeCOM 3 DICOM Toolkit sets the VR of pixel data for the other non encapsulated transfer syntaxes to OW When retrieving or setting pixel data with aMCdataSink or MCdataSource class the toolkit assumes that the OW pixel data is encoded in the host
264. t to an SCP A command response indicates whether a command completed or its state of completion and is usually returned to an SCU Example request 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 It is important to note that this service definition level is where the MergeCOM 3 DICOM Toolkit Library leaves off and your Application begins While MergeCOM 3 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 MergeCOM 3 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 e the services that can be performed between the two devices which also impacts the commands and object instances that can be exchanged MCnegotiationInfo MCproposedContext MCproposedContextList MCresultContext MCsopClass MCtransferSyntax MCtransfer
265. tainer will handle the pixel data 7FE0 0010 attribute for myApp A single MCattributeContainer object can 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 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 such as folders film boxes directories etc Items in a message stream Encoding and decoding attributes in
266. te Tags MCdataElement 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 eg 0010 0010 0038 001C 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 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 Constructing private tags Tags for private attributes are constructed by providing a private group code string in addition to the private group number and element number MCtag tag try tag new MCtag Groupl uint 0x0009 uint 0x10 catch MCillegalArgumentException e
267. ten 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 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 composed 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 Part 1
268. ter 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 e catch MCassociationAbortedException e catch MCexception e Association Properties The MCassociation class contains several properties that can be used to retrieve information about the association 73 ApplicationContextName ListenPort LocalApplication LocalApplicationTitle RemoteApplicationTitle LocallmplementationClassUid LocallmplementationVersion RemotelmplementationClassUid RemotelmplementationVersion LocalMaxPDUsize RemoteMaxPDUsize ProposedContextList NumberOf ProposedContexts 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 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 Appli
269. ter 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_Fun ction and MC_Set_Next_Encapsulated_Value_From _Function routines are used DEFAULT Yes DEFLATE_COMPRESSION_LEVEL MESSAGE_PARMS 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 DEFLATE_ALLOW_FLUSH MESSAGE_PARMS Allows deflate to flush data occasionally to limit buffering DEFAULT Yes DICTIONARY_ACCESS MESSAGE_PARMS 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 parameter 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 DICTIONARY_FILE MESSAGE_PARMS 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 DUPLICATE_ENCAPSULATED_ICON MESSAGE_PARMS When du
270. tes will be set automatically by MergeCOM 3 MCfile myFile new MCfile command serviceName MyFileName or 123 Constructing an empty file object Se Performance Tuning Preparing to save a network message to file Service and Command Properties setServiceCommand ServiceName Command 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 and 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
271. that is transmitted across the network to help determine exactly what each side of an association is sending Network sniffer programs are 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 MergeCOM 3 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 ETWORK_CAPTURE APTURE_FILE APTURE_FILE_SIZE UMBER_OF_CAP_FILES REWRITE_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 MergeCOM 3 initialization file The servic
272. the final word when validating a message Important limitations of MergeCOM 3 validation include e DICOM Part 3 specifies Information Object Definitions IOD s as being composed of modules Each module contains attributes Only in the case of composite OD s may an attribute be specified in DICOM Part 3 as being contained in either a User Optional or Conditional Module MergeCOM 3 DICOM Toolkit treats all such attributes as being value type 3 optional e Also certain modules may be mutually exclusive eg curve and overlay modules in the case of some composite IOD s e g Ultrasound Image Object used in storage services e 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 MergeCOM 3 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 An example MCdimseMessage msg was just received and the intent is to validate the message MCdimseMessage msg non null reference bool validates validates msg validate MCvalidationLevel Errors_Only if validates MCvalidationError err msg getNextValidationError while err null System Console Out WriteLine err ToString rr msg getNextValidationError
273. to create an array of MCproposedContext objects that will be used in your new MCproposedContextList MCproposedContext myCtxArray new MCproposedContext 2 myCtxArray 0 new MCproposedContext myServicel myTSL bool scuRole true scpRole true myCtxArray 1l new MCproposedContext myService2 myTSL scuRole scpRole Finally you create your own MCproposedContextList MCproposedContextList myContextList new MCproposedContextList MYLIST1 myCtxArray AbstractSyntax SCProle SCUrole ServiceName TransferSyntaxList clearNegotiationInfo setNegotiationInfo contains getContext ListName GetEnumerator Size toArray MCproposedConiext properties The MCproposedContext class provides properties for the proposed context The AbstractSyntax 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 The SCProle property retrieves a code defining whether or not the application is willing to perform the SCP role and the SCUrole 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
274. to identify the item If the itemName is unknown to MergeCOM 3 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 121 BASIC_FILM_SESSION N GEI RO 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 TM 3 0008 0014 Instance Creator UID UI 3 0008 0016 SOP Class UID UI 3 0008 0018 SOP Instance UID UI 3 2000 0010 Number of Copies Is 3 2000 0020 Print Priority cs 3 Enumerated Values HIGH MED LOW 2000 0030 Medium 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 Memory Allocation Is 3 2000 0500 Referenced Film Box Sequence SQ 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 UI 1 Encoding items in a To encode an ite
275. 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 ACME_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 free 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 AE titles should be Unique on a network MCproposedContextList MCproposedContext Use a pre configured service list or build your own service list at run time MCtransferSyntaxList MCtransferSyntax MCtransferSyntaxList getObject 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
276. tory for these pathnames The following is an example of how this functionality is used in our configuration files MERGECOM_PRO MERGE_ROOT mc3apps mergecom pro In this example MERGE_ROOT would be an environment variable A special macro MC3INIDIR 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 MC3INIDIR config mergecom pro The path of the profile file is config mergecom pro relative to the location of the merge ini file 2 lam 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
277. tructure 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 137 The SR Document Hierarchy 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 Has Properties Node C1 Node C2 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 relationship to each child or target Content Item and is conveyed by the Relationship Type Figure 20 illustrates the relationship of SR Documents to Content Items and the relationsh
278. ts the exchange of any type of worklist from one AE to another Printing or filming of medical images and image related data on a 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 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 DICOM information model Objects vs object instances Normalized vs composite 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 ob
279. ttributeSet as a non null referenc as list list to the standard output stream System 10 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 along 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 0x1 Store Pixel Data buffer in the XML XmlOptIncludePixelData 0x2 Do no
280. uence Length 1 gt lt Item gt lt Attribute Tag 00081150 VR UI Name Referenced SOP Class h 23 gt 1 2 840 10008 3 1 2 3 3 lt Attribute gt lt Attribute Tag 00081155 VR UI Name Referenced SOP tribute gt Name Image Type gt ORIGINAL SECONDARY OTHER lt Attribute gt Name SOP Class UID Attribute gt Name Study Date Name Study Time Name Modality Name Referenced Performed lt Attribute Tag 7FE00010 VR OW Name Pixel Data Encoding Base64 Length 262144 gt HQAABgMAAATHBAM lt Attribute gt lt DataSet gt lt DcmFile gt 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 INAgNAEy lt Attribute gt lt Attribute Tag 00100010 VR PN Name Patient s Name Length 28 gt Last First lt Attribute gt 193 The default encoding of bulks and attributes with VR UN lt xml version lt DcemFile gt lt FileMetaInfo lt Attribute Version Length lt Attribute Title Length lt FileMetaInf lt DataSet Serv TransferSyntax lt Attribute Length 24 gt 0R lt Attribute
281. uired 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 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 Table 4 DICOM Value Types VT s 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 identified differently than are standar
282. 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 MergeCOM 3 assigns a number to each DIMSE request message The MessageId property sets or gets that identifying number from the command set attribute 0000 0110 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 operations 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 MoveOriginat
283. ute MCitem MCitem MCattribute MCitem 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 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 myService new MCstorageService assoc STANDARD CR MCstorageServic MCdataSet ds new MCdataSet C_STORE_RQ 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 MCdataSet ds provided It then sends the message to th dm myService sendStoreRequest ds catch Exception e network partner affectedS
284. utomatically 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 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 as a 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 see Table 1 DICOM Services Classes and their Component Services 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 als
285. utside 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 Observation 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
286. ve any existing values from the attribute and then set or add append the new value The addValue method appends a value to the attribute your value 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 setValue 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 89 appendNullValue putNullValue Identifying the attribute Polymorphic values myAttr addValue new MCpersonName Smith Jonathan catch MCattributeNotFoundException ei catch MCincompatibleValueException e catch MCvrAlreadyValidException e 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 t
287. ve these properties myFile setServiceCommand STANDARD_CT MCdimseService C_STORE_RQ String serviceName myFile ServiceName ushort command myFile Command File Meta Information Attribute Set MCfileMetalnfo MetalInfo File Meta Information Attribute Set MCfileMetalnfo Metalnfo Preamble property The Data Set MCdataSet DataSet removeFileValues Starting Over removeFileValues 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 MergeCOM 3 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 metaInfo myFile MetalInfo 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 Accessing the File Preamble
288. ver this port Table 35 defines how each parameter should be defined within the system profile Section Description ACCEPT_ANY_APPLICATION_TITLE ASSOC_PARMS If set 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_NAME 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_IC_UID ASSOC_PARMS If set to NO the remote system must specify the local I
289. vice Class Print Management Print Management Print Management Print Management Print Management Print Management Relevant Patient Information Query Relevant Patient Information Query Results Management Patient Management Results Management Study Management Patient Management Media Storage Storage Storage Storage Storage Study Management Study Management Basic Worklist Management Relevant Patient Information Query Hanging Protocol Storage Hanging Protocol Query Retrieve Hanging Protocol Query Retrieve Print Management Instance Availability Notification Storage Storage Media Creation Management Modality Work list Storage Query Retrieve Query Retrieve Query Retrieve Query Retrieve 169 MergeCOM 3 Service Parameter PATIENT_STUDY_ONLY_QR_GET PATIENT_STUDY_ONLY_QR_MOVE PERFORMED_PROCEDURE_STEP PERFORMED_PROCEDURE_STEP_NOTIFY PERFORMED _PROCEDURE_STEP_RETR PRESENTATION_LUT PRINTER PRINTER_CONFIGURATION PRINT_JOB PRINT_QUEUE_MANAGEMENT PROCEDURAL_EVENT_LOGGING PROCEDURE_LOG PULL_PRINT_REQUEST RAW_DATA REAL_WORLD_VALUE_MAPPING REFERENCED_IMAGE_BOX SC_MULTIFRAME_GRAYSCALE_BYTE SC_MULTIFRAME_GRAYSCALE_WORD SC_MULTIFRAME_SINGLE_BIT SC_MULTIFRAME_TRUE_COLOR SPATIAL_FIDUCIALS SPATIAL_REGISTRATION STANDARD_BASIC_TEXT_SR STANDARD_BLENDING_SOFTCOPY_PS STANDARD_COLOR_SOFTCOPY_PS STANDARD_COMPREHENSIVE_SR STANDARD_CR STANDARD CT STANDARD CURVE STANDARD DN PRESENT STANDARD_DX_PROCE
290. vices DICOM M essage Services DICOM StorageM edia Element DIM SE and File Format Part 7 Part 10 Upper L ayer Presentation D ata Service DICOM Media Formats Part 8 and Physical M edia Part 12 Kev M erge Your ey 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 Finally sample 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 MergeCOM 3 Database Manual is available which describes the use of additional tools to extend the data dictionary Development Platform Requirements The MergeCOM 3 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 ru
291. 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 Observation Context 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 MergeCOM 3 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 Parent VT Concept Name VM Req Type Condition Value Set Constraint 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 Th
292. write the attribute tag value representation 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 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 st reamoOut 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 synta
293. x 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 DICOM Structured Reporting The MergeCOM 3 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 encoding of conventional textual reports as SR Documents as well as their rendering Enhanced SR Infor
294. xes 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 MCdataSource classes are used MergeCOM 3 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 Pixel Data Element Basic Offset First Fragment Single Frame Second Fragment Single Sequence Delimiter Table with NO of Pixel Data Frame of Pixel Data Item Item Value Item Value Item Value Sequenc e Delim Tag Compresse Compresse FFFE d Fragment d EODD Fragment 4 4 4 4 04C6H 4 4 024A H 4 4 bytes bytes bytes bytes bytes bytes bytes bytes bytes bytes Table 13 Sample Encapsulated Pixel Data 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 MergeCOM 3 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 Th
295. xes during association negotiation is dependant 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 MergeCOM 3 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 1 Number of Services SERVICE_1 STORAGE _COMMITMENT_PUSH ROLE_1 SCU SCP_Service_List SERVICES_SUPPORTED 1 Number of Services SERVICE_1 STORAGE_COMMITMENT_PUSH ROLE_1 SCP In this case the SCU_Service_List supports the Storage Commitment Push SOP class as an SCU and the SCP_Service_List supports the Storage Commitment Push SOP class as an SCP MergeCOM 3 will negotiate the association based on the settings for these roles The role for a service can be defined as SCU SCP BOTH or be undefined Table 8 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 Requestor s Acceptor s Requestor s Acceptor s Configured Configured Negotiated Negotiated Role Role Role
296. y MergeCOM 3 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 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 contains getSyntax ListName GetEnumerator Size toArray MCnegotiationInfo MCstorageNegotiation MCqueryRetrieve Negotiation Association startup for a client application MCrequester Processing the association in the same thread 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 wil
297. y 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 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 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 new MCdata chunk size data IsLast isLast return data This MCdataSource class is called by MergeCOM 3 only when triggered by your application For example your application might use MyPDSupplyCallback to set the value of the MCdicom PIXEL_DATA attribute 7FE0 0010 as follows
298. you set your MERGE_INT environmental variable to point to the proper configuration files as described earlier 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 lt syntax gt t2 lt syntax gt e file o ml m2 filel file2 tl lt syntax gt 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 fe Compare OB OW OF e g binary pixel data m1 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 1l img 1 dcm me3conv The mc3conv utility can be used to convert a
299. yte 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 value into array put length read into size if thereIsNoMoreData isLast true MCdata data new MCdata array size data IsLast isLast return data 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 MergeCOM 3 will make no further calls for this instance of the attribute MergeCOM 3 calls to provide the attribute s data value MergeCOM 3 calls to provide the attribute s data length and data offset 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

Download Pdf Manuals

image

Related Search

Related Contents

OSPE Steering Valve SASA Sensor Technical Information  Manuals  owner`s manual wireless meeting system  

Copyright © All rights reserved.
Failed to retrieve file