Hello guys,
I am currently implementing DICOM server and testing it sometimes with K-PACS.
My server is reporting that K-PACS proposes transfer syntax with empty UID during association establishment.
The A-ASSOCIATE-RQ sent by K-PACS looks like this:
( bytes counted from 1 like in PS 3.8 )
Bytes 1-74 - OK, all the usual stuff
Bytes 75-99 - Application Context Item, OK
Byte 100 - Presentation Context Start
Bytes 108-138 - Abstract Syntax, OK
**************** Bytes 139-142 - Transfer Syntax with zero length UID *****************
Bytes 143-163 - Transfer Syntax with DICOM Implicit VR Little Endian, OK
164-... - The rest of the A-ASSOCIATE-RQ, OK
The bug is ussualy not fatal, other DICOM AEs will just select transfer syntaxes that are supported and ignore this 0 length one.
Here is a detailed dump of A-ASSOCIATE-RQ received from K-PACS.
The code used to dump it was:
for(int i=0;i<len;++i)
out << i+1 << ": " << "\thex " << std::hex << (int)src[i] << "\tdec " << std::dec << (int)src[i] << "\tchar " << (char)src[i] << std::endl;
So the columns are: byte counted from zero, hexadecimal value of byte, decimal value, byte ascii character
1: hex 1 dec 1 char
2: hex 0 dec 0 char
3: hex 0 dec 0 char
4: hex 0 dec 0 char
5: hex 0 dec 0 char
6: hex db dec 219 char Ű
7: hex 0 dec 0 char
8: hex 1 dec 1 char
9: hex 0 dec 0 char
10: hex 0 dec 0 char
11: hex 5a dec 90 char Z
12: hex 44 dec 68 char D
13: hex 41 dec 65 char A
14: hex 4a dec 74 char J
15: hex 43 dec 67 char C
16: hex 4f dec 79 char O
17: hex 4d dec 77 char M
18: hex 53 dec 83 char S
19: hex 52 dec 82 char R
20: hex 56 dec 86 char V
21: hex 20 dec 32 char
22: hex 20 dec 32 char
23: hex 20 dec 32 char
24: hex 20 dec 32 char
25: hex 20 dec 32 char
26: hex 20 dec 32 char
27: hex 4b dec 75 char K
28: hex 50 dec 80 char P
29: hex 53 dec 83 char S
30: hex 65 dec 101 char e
31: hex 72 dec 114 char r
32: hex 76 dec 118 char v
33: hex 65 dec 101 char e
34: hex 72 dec 114 char r
35: hex 20 dec 32 char
36: hex 20 dec 32 char
37: hex 20 dec 32 char
38: hex 20 dec 32 char
39: hex 20 dec 32 char
40: hex 20 dec 32 char
41: hex 20 dec 32 char
42: hex 20 dec 32 char
43: hex 0 dec 0 char
44: hex 0 dec 0 char
45: hex 0 dec 0 char
46: hex 0 dec 0 char
47: hex 0 dec 0 char
48: hex 0 dec 0 char
49: hex 0 dec 0 char
50: hex 0 dec 0 char
51: hex 0 dec 0 char
52: hex 0 dec 0 char
53: hex 0 dec 0 char
54: hex 0 dec 0 char
55: hex 0 dec 0 char
56: hex 0 dec 0 char
57: hex 0 dec 0 char
58: hex 0 dec 0 char
59: hex 0 dec 0 char
60: hex 0 dec 0 char
61: hex 0 dec 0 char
62: hex 0 dec 0 char
63: hex 0 dec 0 char
64: hex 0 dec 0 char
65: hex 0 dec 0 char
66: hex 0 dec 0 char
67: hex 0 dec 0 char
68: hex 0 dec 0 char
69: hex 0 dec 0 char
70: hex 0 dec 0 char
71: hex 0 dec 0 char
72: hex 0 dec 0 char
73: hex 0 dec 0 char
74: hex 0 dec 0 char
75: hex 10 dec 16 char //Variable Items Start, Application Context, Start
76: hex 0 dec 0 char //Reserved byte
77: hex 0 dec 0 char //Item length
78: hex 15 dec 21 char //Item length=21
79: hex 31 dec 49 char 1 //Application Context UID Start
80: hex 2e dec 46 char .
81: hex 32 dec 50 char 2
82: hex 2e dec 46 char .
83: hex 38 dec 56 char 8
84: hex 34 dec 52 char 4
85: hex 30 dec 48 char 0
86: hex 2e dec 46 char .
87: hex 31 dec 49 char 1
88: hex 30 dec 48 char 0
89: hex 30 dec 48 char 0
90: hex 30 dec 48 char 0
91: hex 38 dec 56 char 8
92: hex 2e dec 46 char .
93: hex 33 dec 51 char 3
94: hex 2e dec 46 char .
95: hex 31 dec 49 char 1
96: hex 2e dec 46 char .
97: hex 31 dec 49 char 1
98: hex 2e dec 46 char .
99: hex 31 dec 49 char 1 //Application Context UID end, Application Context end
100: hex 20 dec 32 char //Presentation Context Start
101: hex 0 dec 0 char //Reserved
102: hex 0 dec 0 char //Item lenght
103: hex 3c dec 60 char < //Item length=60
104: hex 1 dec 1 char //Context ID=1
105: hex 0 dec 0 char //Reserved
106: hex 0 dec 0 char //Reserved
107: hex 0 dec 0 char //Reserved
108: hex 30 dec 48 char 0 //Abstract/Transfer Syntax Subitems start, Abstract Syntax start
109: hex 0 dec 0 char //Reserved
110: hex 0 dec 0 char //Item length
111: hex 1b dec 27 char //Item length=27
112: hex 31 dec 49 char 1 //Abstract syntax UID start
113: hex 2e dec 46 char .
114: hex 32 dec 50 char 2
115: hex 2e dec 46 char .
116: hex 38 dec 56 char 8
117: hex 34 dec 52 char 4
118: hex 30 dec 48 char 0
119: hex 2e dec 46 char .
120: hex 31 dec 49 char 1
121: hex 30 dec 48 char 0
122: hex 30 dec 48 char 0
123: hex 30 dec 48 char 0
124: hex 38 dec 56 char 8
125: hex 2e dec 46 char .
126: hex 35 dec 53 char 5
127: hex 2e dec 46 char .
128: hex 31 dec 49 char 1
129: hex 2e dec 46 char .
130: hex 34 dec 52 char 4
131: hex 2e dec 46 char .
132: hex 31 dec 49 char 1
133: hex 2e dec 46 char .
134: hex 32 dec 50 char 2
135: hex 2e dec 46 char .
136: hex 32 dec 50 char 2
137: hex 2e dec 46 char .
138: hex 31 dec 49 char 1 //Abstract Syntax UID end
139: hex 40 dec 64 char @ //Transfer Syntax start
140: hex 0 dec 0 char //Reserved
141: hex 0 dec 0 char //Item Length !!!
142: hex 0 dec 0 char //Item Length !!! ZERO LENGTH TRANSFER SYNTAX, Transfer syntax end
143: hex 40 dec 64 char @ //Transfer syntax start
144: hex 0 dec 0 char //Reserved
145: hex 0 dec 0 char //Item length
146: hex 11 dec 17 char //Item length=17
147: hex 31 dec 49 char 1 //Transfer Syntax UID start
148: hex 2e dec 46 char .
149: hex 32 dec 50 char 2
150: hex 2e dec 46 char .
151: hex 38 dec 56 char 8
152: hex 34 dec 52 char 4
153: hex 30 dec 48 char 0
154: hex 2e dec 46 char .
155: hex 31 dec 49 char 1
156: hex 30 dec 48 char 0
157: hex 30 dec 48 char 0
158: hex 30 dec 48 char 0
159: hex 38 dec 56 char 8
160: hex 2e dec 46 char .
161: hex 31 dec 49 char 1
162: hex 2e dec 46 char .
163: hex 32 dec 50 char 2 //Transfer syntax UID end, Transfer Syntax end
164: hex 50 dec 80 char P //User Information Item Start...
...
Regards,
Bartosz Meglicki
National Centre for Nuclear Research
Department of Nuclear Equipment
ul. Andrzeja Sołtana 7
05-400 Otwock, Poland