Lớp Khuôn dạng Dữ liệu DICOM (DICOM Data Format Layer) chia làm các thành phần định nghĩa:
- Các Lớp SOP Lưu trữ Trung gian DICOM và các Định nghĩa Đối tượng Thông tin liên quan.
- Khuôn dạng file DICOM
- Lớp SOP Thư Mục Lưu Trữ Trung gian DICOM
- Sơ lược Ứng dụng Lưu trữ Trung gian
- Sơ lược Bảo mật cho Lưu trữ Trung gian
a. Các Lớp SOP Lưu trữ Trung gian
Các Lớp SOP và các Định nghĩa Đối tượng Thông tin (IOD) liên quan được sử dụng để mang thông tin hình ảnh tại Lớp Khuôn dạng Dữ liệu. Các Lớp SOP và IOD được sử dụng cho Lưu trữ Trung gian phải tuân theo các cơ chế được thiết lập ở PS 3.3 và PS 3.4. Một ví dụ về IOD như thế là hình ảnh, thông tin bệnh nhân, kết quả.
Sử dụng các DICOM IOD kết hợp với các Thao tác Lưu trữ Trung gian tạo lên một số Lớp SOP Lưu trữ Trung gian. Các Thao tác Trung gian (ví dụ: đọc, ghi, xoá,.) được thực hiện thông qua Dịch vụ file DICOM.
Khái niệm Lớp SOP trong ngữ cảnh Lưu trữ Trung gian tương đương với khái niệm Lớp SOP trong ngữ cảnh mạng. Cả IOD Thường, Phức và các Lớp SOP đều được sử dụng trong ngữ cảnh Lưu trữ Trung gian.
b. Khái niệm Khuôn dạng File DICOM
Các Bộ dữ liệu được đưa vào định dạng trong Trung gian vật lý dưới dạng các file DICOM, dựa vào các Dịch vụ file DICOM.
c. Thư mục Thông tin Y tế DICOM
Để thuận lợi cho cho việc quản lí và truy nhập thông tin hình ảnh và các thông tin liên quan, các Lớp SOP được tạo ra cho lưu trữ trung gian có thể được sử dụng để tạo tham chiếu (hay thư mục). Các trường hợp cụ thể của các Lớp SOP này là được mang trong một file với File ID là DICOMDIR
d. Sơ lược ứng dụng Lưu trữ Trung gian DICOM
Một Sơ Lược ứng dụng Lưu trữ Trung gian định nghĩa sự lựa chọn tại các tầng khác nhau của Mô hình Lưu trữ Trung gian khả dụng với các yêu cầu hay ngữ cảnh cụ thể mà trong đó sự trao đổi dữ liệu được thực hiện. Những lựa chọn như vậy thường được xác định như là một Sơ lược ứng dụng Lưu trữ Trung gian để đảm bảo chắc chắn khả năng đồng hoạt động giữa các hệ thống cùng tuân theo một Sơ Lược ứng dụng Lưu trữ Trung gian.
99 trang |
Chia sẻ: oanh_nt | Lượt xem: 1321 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu về chuẩn DICOM, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
vận dụng chúng không chính xác.
Bảng IV.1.1b: Các Kí tự Điều khiển DICOM
Kí hiệu Tên Giá trị mã hoá
LF Line Feed 00/10
FF Form Feed 00/12
CR Carriage Return 00/13
ESC Escape 00/11
III.1.2. Giá trị Thể hiện VR
Giá trị Thể hiện (Value Representation-VR) của một Thành phần Dữ liệu (Data Element) miêu tả loại và khuôn dạng dữ liệu của trường Giá trị (Value) trong Thành phần Dữ liệu.
Một số giá trị của tiêu biểu VR :
Tên VR
Định nghĩa
Bộ Kí tự
Chiều dài Gíá trị
AS
(String Age)
Chuỗi kí tự chỉ tuổi tuân theo theo một trong các dạng sau: nnnD, nnnW, nnnM, nnnY. Trong đó nnn chứa số Ngày, Tuần, Tháng, Năm.
“0”-“9”, “D”, “W”, “Y” trong Bộ Kí tự mặc định.
Cố định 4 byte
AT
(Attibute Tag)
Cặp số nguyên không dấu 16 bit là giá trị của Nhãn Thành phần Dữ liệu.
Không
4 byte cố định
CS
(Code String)
Chuỗi kí tự, dấu cách đầu và cuối (20H) không được tính
Kí tự in hoa,”0”-“9”, kí tự SPACE, “_” trong Bộ kí tự mặc định
DA
(Date)
Chuỗi kí tự theo khuôn dạng yyymmdd. Trong đó yyy, mmm, ddd tương ứng chứa giá trị Năm, Tháng, Ngày.
VD: “1980097” thể hiện Ngày 7 tháng 9 năm 1980.
“0”-“9” trong Lựa chọn Kí tự mặc định. Có thể hỗ trợ “.”
Cố định 8 byte
DS
(Decimal String)
Chuỗi kí tự thể hiện số có dấu cố định hay không cố định. Số có dấu cố định được tạo bởi các kí tự “0”-“9”, “+”, “-“ và “.” để thể hiện dấu thập phân. Số có dấu không cố định dùng “e” hay “E” để thể hiện số mũ.
Lớn nhất 16 byte
FL
(Floating Point Single)
Số có dấu bất định được thể hiện trong Khuôn dạng Số Dấu Bất định IEEE 754:1985 32-bit
Không
Cố định 4 byte
IS
(String Integer)
Chuỗi kí tự thể hiện một số nguyên hệ số 10, đứng đầu bởi “+” hay “-“
Số nguyên n được thể hiện nằn trong dải:
-231 <= n <=(231-1)
“0”, ”9”, ”+”, “-“ thuộc bộ kí tự mặc định
Lớn nhất 12 byte
LO
(Long String)
Chuỗi kí tự có thể có với dấu cách ở đầu hay cuối. Kí tự ”\” được dùng để phân biệt các giá trị trong thành phần dữ liệu nhiều giá trị
“0”-“9”, “+”, “-“ của bộ kí tự mặc định
Lớn nhất 64 byte
LT
(Long Text)
Chuỗi kí tự bao gôm một hay nhiều đoạn. Sử dụng cả Kí tự Đồ hoạ và điều khiển. Dấu cách đứng sau không được tính, dấu cách đứng đầu được tính. Kí tự “\” không được sử dụng
Bộ kí tự mặc định và/ hoặc theo định nghĩa bởi (0008,0005)
Lớn nhất 10240 kí tự
OB
(Other Byte String)
Chuỗi các byte mà sự mã hoá được xác định trong Cú pháp Chuyển đổi được thỏa thuận. OB là một VR không tuân theo luật mã hoá thứ tự byte Little/Big Edian. Có thể thêm một byte NULL (00H) nếu cần để đạt được số byte chẵn
Không
Xem định nghĩa Cú pháp Chuyển đổi
OW
(Other Word String)
Chuỗi các từ 16 bit mà sự mã hoá được xác định bởi Cú pháp Chuyển đổi được thoả thuận. OW cần thiết phải chuyển đổi byte của mỗi từ khi thay đổi thứ tự mã hoá byte giữa kiểu Little Edian và Big Endian.
Không
Xem định nghĩa Cú Pháp Chuyển đổi.
PN
(Person Name)
Chuỗi kí tự chỉ tên bệnh nhân gồm có 5 thành phần. Các thành phần có thể trống. Các thành phần được phân giới bởi kí tự “^”
VD:”Adams^John RobertQincy^^Rev.^B.A.M.Div
Bộ Kí tự mặc định không bao gồm các Kí tự Điều khiển LF, FF, và CR (trừ ESC)
Nhiều nhất 64 kí tự trên một nhóm thành phần (component group).
SL
(Signed Long)
Số 32 bit có dấu nhị phân dưới dạng mã bù 2
Thể hiện giá trị nguyên, n, trong dải:
-231 <= n <=(231-1)
Không
Cố định 4 byte
SQ
(Sequense of Items)
Chỉ số Mục trong Chuỗi, có thể là không hoặc nhiều.
Không
Không
UI
(Unique Identifier)
Chuỗi kí chứa một UID để xác định duy nhất một đối tượng trong một dải rộng các thành phần. UID là một chuỗi các thành phần số được ngăn cách bởi kí tự cách ”.”
“0”-“9”, “.” Trong Bộ Kí tự mặc định
Nhiều nhất 64 byte
UN
(Unknown)
Chuỗi các byte mà sự mã hoá không xác định
Không
Bất cứ chiều dài nào hợp lệ với các VR DICOM khác
UT
(Unlimited Text)
Một chuỗi kí tự có thể chứa một hay nhiều đoạn. Nó có thể chứa bộ Kí tự Đồ hoạ và các Kí tự Điều khiển.
Bộ Kí tự mặc định
232-2
III.2. Bộ Dữ liệu
III.2.1. Khái niệm
Một Bộ Dữ liệu thể hiện một trường hợp cụ thể Đối tượng Thông tin thế giới thực. Một bộ Dữ liệu được cấu tạo bởi các Thành phần Dữ liệu chứa các Giá trị được mã hoá của đối tượng đó.
III.2.2. Thành phần Dữ liệu
a. Khái niệm
Thành phần Dữ liệu được xác định duy nhất bởi một Nhãn Thành phần Dữ liệu. Các Thành phần dữ liệu trong một Bộ Dữ liệu được xếp theo thứ tự bởi việc tăng số hiệu Nhãn Thành phần Dữ liệu và chúng chỉ xuất hiện nhiều nhất là một lần trong một Bộ Dữ liệu.
Có hai loại Thành phần Dữ liệu được định nghĩa:
-Thành phần Dữ liệu Chuẩn có số Nhóm (Group number) là số chẵn và không phải là (0000, eeee), (0002, eeee), (0004, eeee), (0006, eeee).
-Thành phần Dữ liệu Riêng có số Nhóm là lẻ và không phải là (0001, eeee), (0003, eeee), (0005, eeee), (0007, eeee), (FFFF, eeee).
eeee: số Thành phần bất kì.
Một Thành phần Dữ liệu rơi vào một trong ba cấu trúc. Hai cấu trúc trong đó có chứa VR (VR hiện), chúng khác nhau về chiều dài và cách thể hiện. Cấu trúc thứ ba không chứa VR (VR ẩn). Cả ba cấu trúc đều phải bắt buộc chứa Nhãn Thành phần Dữ liệu, Chiều dài Giá trị, và Giá trị .
Thành phần Dữ liệu
Bộ Dữ liệu
…
Thành phần
Dữ liệu
Thành phần
Dữ liệu
Thành phần
Dữ liệu
Thành phần
Dữ liệu
Nhãn VR Chiều dài Trường Giá Trị
Giá trị
Trường tuỳ chọn-Phụ thuộc vào Cú pháp Chuyển đổi được thoả thuận
Hình III.2.2.1. Cấu trúc Thành phần Dữ liệu và Bộ Dữ liệu
b. Các trường của Thành phần Dữ liệu
Thành phần Dữ liệu được cấu tạo bởi các trường. Có ba trường bắt buộc cho mọi cấu trúc Thành phần Dữ liệu: Nhãn, Chiều dài Giá trị, Trường Giá trị. Trường VR chỉ xuất hiện trong cấu trúc Thành phần Dữ liệu VR hiện.
- Nhãn Thành phần Dữ liệu: Là một cặp thứ tự số nguyên không dấu 16-bit thể hiện số Nhóm và số Thành phần.
- VR: Chuỗi kí tự hai byte chứa VR (Giá trị thể hiện) của Thành phần Dữ liệu. VR ứng với một Nhãn Thành phần Dữ liệu cụ thể được định nghĩa trong Từ điển Dữ liệu. Hai kí tự VR được mã hoá sử dụng các kí tự từ bộ kí tự mặc định DICOM.
- Chiều dài Giá trị: Có hai trường hợp:
Một số nguyên không dấu 16 hay 32 bit (phụ thuộc vào VR và khi VR là ẩn hay hiện) chứa chứa Chiều dài hiện của Trường Giá trị với ý nghĩa là số byte (chẵn) tạo lên Giá trị. Nó không bao hàm chiều dài của Nhãn Thành phần Lệnh và trường Chiều dài Lệnh.
Một bộ số 32 bit tương ứng với Chiều dài Bất định (FFFFFFFFH). Chiều dài Bất định được sử dụng cho các Thành phần Dữ liệu có VR dạng SQ (Chuỗi Mục) hay UN (Không xác định). Hoặc có thể sử dụng cho các Thành phần Dữ liệu có VR dạng OW, OB phụ thuộc vào Cú pháp Chuyển đổi được thoả thuận.
- Trường Giá trị: Một số chẵn các byte chứa Giá trị (các Giá trị) của Thành phần Dữ liệu.
Loại dữ liệu của các Giá trị được lưu trữ trong trong trường này được xác định bởi VR của Thành phần Dữ liệu. VR ứng với một Nhãn Thành phần Dữ liệu cụ thể được xác định sử dụng Từ điển Dữ liệu, hoặc được chứa ngay trong trường VR của Thành phần Dữ liệu VR hiện.
VM (Value Multiplicity) chỉ ra bao nhiêu Giá trị với cùng một VR có thể nằm trong Trường Giá trị. Nếu VM lớn hơn một, các Giá trị này sẽ được phân định ranh giới.
Trường Giá trị với chiều dài bất định được phân định thông qua việc sử dụng các Mục Giới hạn Chuỗi (Sequence Delimitation Item) và các Thành phần Dữ liệu Giới hạn (Delimitation Data Element).
c. Thành phần Dữ liệu với VR hiện
Các Thành phần Dữ liệu sử dụng VR hiện có đủ bốn trường như đã trình bày ở phần trên. Phụ thuộc vào VR, nó lại được chia ra làm các loại:
- Với VR là OB, OW, SQ, hoặc UN thì khuôn dạng Thành phần Dữ liệu như sau:
Nhãn
VR
Chiều dài Giá trị
Giá trị
Số Nhóm (số nguyên không dấu16 bit)
Số Thành phần
(số nguyên 16 bit không dấu)
VR
(chuỗi kí tự 2 byte)
“OB”, “OW”, “SQ”, “UN”
Dự trữ
(2 Byte). Đưa về
000H
Số nguyên không dấu 32 bit
Số chẵn byte chứa Giá trị Thành phần Dữ liệu được mã hoá theo VR và Cú pháp Chuyển đổi. Được phân giới nếu chiều dài không xác định
2 byte
2 byte
2 byte
2 byte
4 byte
“Chiều dài Giá trị” byte nếu là Chiều dài hiện
- Với VR là UT, Thành phần Dữ liệu có cấu trúc tương tự như đối với VR là OB, SQ, UN. Tuy nhiên, Trường Giá trị phải có Chiều dài hiện, tức là Trường Chiều dài phải mang giá trị bằng với chiều dài (số byte) của Trường Giá trị.
- Với VR là các giá trị còn lại, khuôn dạng Thành phần Dữ liệu như sau
Nhãn
VR
Chiều dài Giá trị
Giá trị
Số Nhóm
(số nguyên không dấu16 bit)
Số Thành phần
(số nguyên không dấu 16 bit)
VR
(chuỗi kí tự hai byte)
Số nguyên không dấu 16 bit
Số chẵn byte chứa Giá trị Thành phần Dữ liệu được mã hoá theo VR và Cú pháp Chuyển đổi.
2 byte
2 byte
2byte
2 byte
“Chiều dài Giá trị” byte
d. Thành phần Dữ liệu với VR ẩn:
Khi sử dụng cấu trúc VR ẩn, Thành phần Dữ liệu sẽ được cấu trúc thành 3 trường. Khuôn dạng của nó như sau:
Nhãn
Chiều dài Giá trị
Giá trị
Số Nhóm
(số nguyên không dấu16 bit)
Số Thành phần
(số nguyên không dấu 16 bit)
Số nguyên không dấu 32 bit
Số chẵn byte chứa Giá trị Thành phần Dữ liệu được mã hoá theo VR và Cú pháp Chuyển đổi. Được phân giới nếu chiều dài không xác định
2 byte
2 byte
4 byte
“Chiều dài Giá trị” byte nếu là Chiều dài hiện
III.2.3. Thứ tự byte kiểu Little Endian và Big Edian
Thứ tự Byte (Byte odering) mã hoá là một đặc điểm quan trọng phải được sự đồng thuận trong giao tiếp giữa các Thực thể ứng dụng.
Thứ tự byte kiểu Little Edian được định nghĩa như sau:
- Trong một số nhị phân bao gồm nhiều byte, Byte nằm cuối cùng (phía phải) được coi là có trọng số lớn nhất. Các Byte nằm còn lại có trọng số tăng dần theo chiều từ phải sang phải.
Thứ tự byte kiểu Big Edian được định nghĩa theo cách ngược lại:
- Trong một số nhị phân chứa nhiều Byte, trọng số các Byte giảm dần theo chiều từ trái sang phải. Tức là Byte có trọng số lớn nhất nằm đầu tiên bên trái trong dãy cácByte.
Tuy nhiên, đối với cả hai kiểu thì:
- Trong một byte (8 bit), trọng số từ cao tới thấp vẫn theo chiều bình thường là từ trái sang phải.
- Trong một chuỗi kí tự bao gồm các mã Byte (8 bit), các kí tự vẫn được mã hoá theo thứ tự từ trái qua phải.
Số nhị phân 2 Byte:
00000000 11111111
Chuỗi 5 kí tự :
“DICOM”
Little Endian
11111111 00000000
01000100/ 01001001/ 01000011/ 01001111/ 01001100
Big Endian
00000000 11111111
01000100/ 01001001/ 01000011/ 01001111/ 01001100
Bảng III.2.3: Minh hoạ khái niệm thứ tự Byte Little và Big Endian
Thứ tự Byte phải được sự đồng thuận của hai bên trao đổi thông dựa trên Cú pháp Chuyển đổi. Cú pháp Chuyển đổi DICOM mặc định được mọi Thực thể Thông tin chấp nhận là Little Endian.
III.2.4. Các loại thành phần dữ liệu
Một Thuộc tính, được mã hoá bằng một Thành phần Dữ liệu, có thể hay không bị yêu cầu trong Bộ Dữ liệu, phụ thuộc vào Loại Thành phần Dữ liệu của Thuộc tính đó.
Loại Thành phần Dữ liệu được dùng cho một Thuộc tính của một Định nghĩa Đối tượng Thông tin (IOD) hoặc một Định nghĩa Lớp SOP được sử dụng để xác định Thuộc tính đó là bắt buộc hay tuỳ chọn. Nó cũng chỉ ra liệu Thuộc tính đó có điều kiện hay không (chỉ bắt buộc khi dưới một điều kiện nào đó).
Có các loại Thành phần Dữ liệu sau:
- Thành phần Dữ liệu Yêu cầu Loại 1: Là Thành phần Dữ liệu bắt buộc. Trường Giá trị phải chứa giá trị hợp lệ được xác định bởi các thành phần VR hay VM. Chiều dài của Trường Giá trị không bằng 0. Sự vắng mặt của Giá trị hợp lệ là vi phạm.
- Thành phần Dữ liệu Điều kiện Loại 1C: Xuất hiện trong dưới các điều kiện cụ thể nào đó. Dưới các điều kiện đó, nó có cùng các yêu cầu như Loại 1. Nếu các điều kiện xuất hiện mà không có Thành phần Dữ liệu này thì đó là không hợp lệ.
- Thành phần Dữ liệu Yêu cầu Loại 2: Là Thành phần Dữ liệu bắt buộc. Tuy nhiên, nếu Giá trị của Thành phần Dữ liệu này là chưa biết, có thể mã hoá với Chiều dài Gía trị bằng không và không có Giá trị. Sự vắng mặc của Thành phần Dữ liệu này trong Bộ Dữ liệu là không hợp lệ.
- Thành phần Dữ liệu Điều kiện Loại 2C: Có các yêu cầu giống với Loại 2 dưới một số điều kiện cụ thể. Nếu có các điều kiện đó mà không có Thành phần Dữ liệu này thì đó là không hợp lệ.
- Thành phần Dữ liêu Tuỳ chọn Loại 3: Là thành phần tuỳ chọn. Sự vắng mặt của Thành phần Dữ liệu loại này không hề gây ra một dấu hiệu gì và không phải là vi phạm qui ước. Nó có thể được mã hoá với chiều dài bằng không và không có giá trị.
III.2.5. Cách sắp xếp các Bộ Dữ liệu
Khi các Thành phần Dữ liệu có VR= SQ, Giá trị được chứa trong nó là một Chuỗi (Sequence) các Mục (Item) (có thể là 0 hay nhiều mục), mà mỗi Mục lại chứa một bộ các Thành phần Dữ liệu. SQ đưa ra phương pháp mã hoá linh hoạt bằng cách “lặp lại“ các bộ Thành phần Dữ liệu. Nó cũng được sử dụng một cách đệ qui để chứa các cấu trúc đa lớp.
Các Mục trong một Thành phần Dữ liệu SQ được sắp xếp theo một bộ có trật tự, mỗi Mục được tham chiếu bởi số thứ tự của nó. Mục ở vị trí đầu Chuỗi có số thứ tự là 1, số thứ tự này của các Mục tiếp theo được tăng dần cho tới cuối Chuỗi.
a. Qui tắc mã hoá các Mục
Mỗi Mục trong một Thành phần Dữ liệu được được mã hoá là một Thành phần Dữ liệu với Nhãn có giá trị (FFFE,E000). Theo sau là 4 byte trường Chiều dài Mục xác định việc mã hoá Trường Giá trị Mục theo một trong hai cách:
Chiều dài hiện: Là một số chẵn byte chứa Giá trị Chuỗi Mục (không kể Trường Chiều dài Mục), được mã hoá là số nguyên không dấu 32-bit. Đây chính là tổng chiều dài của các Thành phần Dữ liệu được mang bởi Mục.
Chiều dài không xác định: Trường Chiều dài Mục chứa giá trị FFFFFFFFH để chỉ rằng Mục có chiều dài không xác định. Nó được sử dụng kết hợp với với Thành phần Dữ liệu Giới hạn (Delimitation Data Element). Thành phần Dữ liệu Giới hạn có Nhãn là (FFFE, E00D) và được theo sau các Thành phần Dữ liệu trong mục. Không có giá trị nào trong Thành phần Dữ liệu Giới hạn và Chiều dài Gía trị bằng 00000000H.
Mỗi Giá trị Mục được cấu tạo bởi các Thành phần Dữ liệu. Trong một Mục, các Thành phần Dữ liệu này được thứ tự hoá bằng cách tăng dần giá trị Nhãn Thành phần Dữ liệu và chỉ xuất hiện một lần. Các Thành phần Dữ liệu trong một Mục có thể cũng có VR = SQ do có tính đệ qui.
b. Phân giới trong Chuỗi Mục
Trong một Thành phần Dữ liệu có VR= SQ, sự Phân giới (delimitation) các mục trong một Chuỗi các Mục theo một trong hai cách sau:
Chiều dài hiện: Số chẵn các byte được chứa trong Giá trị Thành phần Dữ liệu (không kể Trường Chiều Dài Thành phần Dữ liệu), được mã hoá là một số nguyên khôn dấu 32-bit.
Chiều dài không xác định: Trường Chiều dài Thành phần Dữ liệu chứa giá trị FFFFFFFFH. Khi đó, phải sử dụng Mục Giới hạn Chuỗi. Mục Giới hạn chuỗi được đứng sau Mục cuối cùng trong chuỗi các Mục. Nó có nhãn là (FFFE, E00D) với Chiều dài Mục bằng 00000000H (không có giá trị nào trong Mục này).
Mục Giới hạn Chuỗi (FFFE,E00D) khác với Thành phần Dữ liệu Giới hạn (FFFE,E00D). Mục Giới hạn Chuỗi dùng để phân giới các Chuỗi các Mục có chiều dài không xác định. Còn Giới hạn chuỗi để phân biệt các Thành phần Dữ liệu trong Mục có chiều dài không xác định. Khi một Mục có chiều dài không xác định là Mục cuối cùng trong một Chuỗi các Mục có chiều dài không xác định, thì Giới hạn Mục được theo sau bởi Mục Giới hạn Chuỗi.
Minh hoạ 1: Khuôn dạng của một Thành phần Dữ liệu với VR ẩn được định nghĩa là một Chuỗi các Mục (VR=SQ) với ba Mục có chiều dài hiện.
Nhãn Thành phần Dữ liệu
Chiều dài
Giá trị Thành Phần Dữ liệu
(ggg,eeee)
với VR=SQ
0000
0F00H
Mục số 1
Mục số 2
Mục số 3
Nhãn Mục
(FFFE,E000)
Chiều dài Mục
0000
04F8H
Giá trị Mục
Bộ Dữ liệu
Nhãn Mục
(FFFE,E000)
Chiều dài Mục
0000
04F8H
Giá trị Mục
Bộ Dữ liệu
Nhãn Mục
(FFFE,E000)
Chiều dài Mục
0000
04F8H
Giá trị Mục
Bộ Dữ liệu
4 byte
4 byte
4 byte
4 byte
04F8H byte
4 byte
4 byte
04F8H byte
4 byte
4 byte
04F8H byte
Minh hoạ 2: Khuôn dạng của một Thành phần Dữ liệu với VR hiện được định nghĩa là một Chuỗi các Mục (VR=SQ) có chiều dài không xác định, có chứa hai Mục có chiều dài hiện.
Nhãn
T
P
D
L
VR
Chiều dài
TPDL
Giá trị Thành Phần Dữ liệu
(ggg,
eeee)
với VR=SQ
SQ
0
0
0
0
H
FFFF
FFFFH
không
xác
định
Mục số 1
Mục số 2
Mục Phân giới Chuỗi
Nhãn Mục
(FFFE,E000)
Chiều dài Mục
0000
04F8H
Giá trị Mục
Bộ Dữ liệu
Nhãn Mục
(FFFE,E000)
Chiều dài Mục
0000
04F8H
Giá trị Mục
Bộ Dữ liệu
Nhãn Mục
(FFFE,E000)
Chiều dài Mục
0000
0000H
4 byte
2
byte
2
byte
4 byte
4 byte
4 byte
04F8H byte
4 byte
4 byte
04F8H byte
4 byte
4 byte
Minh hoạ 3: Khuôn dạng của một Thành phần Dữ liệu với VR ẩn được định nghĩa là một Chuỗi các Mục (VR=SQ) có chiều dài không xác định, chứa hai Mục: một Mục có chiều dài hiện và một Mục có chiều dài không xác định.
Nhãn
T
P
D
L
Chiều dài
TPDL
Giá trị Thành Phần Dữ liệu
(ggg,
eeee)
với
VR=SQ
0000
0F00H
Không
xác
định
Mục số 1
Mục số 2
Mục Giới hạn Chuỗi
Nhãn
Mục
(FFFE,
E000)
Chiều dài Mục
0000
17B6H
Giá trị Mục
Bộ Dữ liệu
Nhãn
Mục
(FFFE,
E000)
Chiều dài Mục
0000
Giá trị Mục
Bộ
Dữ liệu
Nhãn Giới hạn Mục
Chiều dài
Nhãn
Giới
Hạn
(FFFE,E000)
Chiều
dài
Mục
0000
0000H
4 byte
4 byte
4 byte
4 byte
17B6H byte
4 byte
4 byte
4 byte
Không xác định
4 byte
4 byte
4 byte
III.2.6. Thành phần Dữ liệu Riêng
Một quá trình có thể yêu cầu truyền các thông tin không thể được được chứa trong Thành phần Dữ liệu Chuẩn. Vì thế, các Thành phần Dữ liệu Riêng (Private Data Element) được đưa ra để sử dụng cho mục đích này.
Thành phần Dữ liệu Riêng có cấu trúc giống như Thành phần Dữ liệu Chuẩn (gồm có bốn trường: Nhãn, VR, Chiều dài, Giá trị). Tuy nhiên, Số Nhóm trong Nhãn của Thành phần Dữ liệu Riêng là số lẻ.
Thành phần Dữ liệu không được dùng trong các trường hợp đòi hỏi Thành phần Dữ liệu Chuẩn.
III.3. Mã hoá dữ liệu Điểm ảnh, Overlay, và Dạng sóng
III.3.1. Dữ liệu Điểm ảnh, Overlay, và các Thành phần dữ liệu liên quan
Thành phần Dữ liệu Điểm ảnh (Pixel Data Element) (7FE0, 0010) và Thành phần Dữ liệu Overlay (60xx, 3000) được sử dụng cho trao đổi dữ liệu hình ảnh. Chúng miêu tả cách các Dữ liệu Điểm ảnh và Overlay được mã hoá và thông dịch.
Các Thành phần dữ liệu này có VR là OW hoặc OB phụ thuộc vào Cú pháp Chuyển đổi được thoả thuận. Sự khác biệt cơ bản giữa OW và OB là ở chỗ: OB là một chuỗi các Byte và nó không phụ thuộc vào thứ tự Byte mã hoá (Little/Big Endian).
III.3.1.1. Mã hoá dữ liệu Điểm ảnh
a. Các khái niệm
Dữ liệu Điểm ảnh được mã hoá với số Bit khác nhau. Các Thành phần Dữ liệu sau sẽ xác định cấu trúc điểm ảnh:
Bits Allocated (0028,0100)
Bits Stored (0028,0101)
High Bit (0028,0102)
Mỗi Điểm ảnh chứa một Gía trị Mẫu Điểm ảnh (Pixel Sample Value). Kích thước của điểm ảnh được xác định bởi Bits Allocated. Bits Stored xác định số Bit trong đó dùng để thể hiện một giá trị điểm ảnh. High Bit chỉ ra Bit có trọng số lớn nhất trong Bits Stored. Các Bit không được dùng cho Giá trị Mẫu Điểm ảnh được sử dụng cho các lớp Overlay.
Pixel Sample
15 11 10 8 7 4 3 0
Minh hoạ: Một Dữ liệu Điểm ảnh 16 bit
-Bit Allocated: 16
-Bit Stored: 12
-High Bit:16
-4 Bit không dùng cho Dữ liệu điểm ảnh
Trường Giá trị chứa Dữ liệu điểm ảnh, cũng như các Trường Giá trị khác của DICOM, phải chứa một số chẵn các Byte. Điều này dẫn tới là Trường Giá trị phải được thêm các Bit không liên quan đến dữ liệu hình ảnh vào.
Trong một đối tượng hình ảnh đa khung, mỗi khung hình ảnh riêng lẻ không được thêm các Bit làm chẵn. Các khung ảnh riêng lẻ này sẽ liên tiếp nhau và các Bit thêm vào (nếu cần thiết) được đưa vào tại cuối Trường Giá trị.
Giá trị của một Mẫu Điểm ảnh có thể là số nguyên bù 2 hoặc số nguyên không dấu. Nếu là số nguyên bù 2, Bit thể hiện dấu là High Bit.
b. Cách mã hoá
Thứ tự mã hoá các Dữ liệu Điểm ảnh cho một lớp hình ảnh (image plane) là từ trái qua phải và từ trên xuống dưới. Mỗi một Điểm ảnh (pixel) có thể chứa một hay nhiều Giá trị Mẫu Điểm ảnh (ví dụ với hình ảnh đa lớp).
Pixel i+1
Pixel i
Pixel i-1
Hình III.3.1.2a: Một Lớp hình ảnh
Đối với các dữ liệu điểm ảnh có VR=OW(other word string),mã hoá theo dòng bit từ bit cuối cùng của Điểm ảnh đầu tiên tới bit đầu tiên của Điểm ảnh đứng sau cùng. Trong dòng bit đó, bit đầu tiên của một Điểm ảnh theo được theo sau bit cuối cùng của Điểm ảnh tiếp theo. Dữ liệu Điểm ảnh vì thế được chia ra thành dòng các từ (word) 16-bit, và chúng chịu ảnh hưởng của thứ tự byte mã hoá theo Cú pháp chuyển đổi.
Đối với dữ liệu điểm ảnh có VR=OB (Bits Allocated bé hơn hay bằng 8 bit), cách mã hoá tương tự, chỉ có điều Dữ liệu điểm ảnh được chia thành dòng các từ 8-bit.
Pixel Cell i-1
MSB LSB
Pixel Cell i MSB LSB
Pixel Cell i+1 MSB LSB
Pixel Cell i+2 MSB LSB
Pixel Cell i-1 MSB LSB
Pixel Cell i MSB MSB
Pixel
MSB
LSB
Cell i+1
LSB
Pixel Cell i+2
MSB LSB
Hình vẽ III.31.2b: Mã hoá dữ liệu điểm ảnh với VR= OW
III.3.1.2. Mã hoá Dữ liệu Overlay
Các Lớp Overlay (Overlay Plane) được mã hoá luôn với số Bit là 1, và được mã hoá bởi các Bit không được dùng trong Giá trị Mẫu Điểm ảnh trong Dữ liệu Điểm ảnh, hay được tách ra từ Dữ liệu Điểm ảnh trong Dữ liệu Overlay. Các Thành phần Dữ liệu sau sẽ xác định cấu trúc một Lớp Overlay.
- Overlay Bit Allocated (60xx,0100)
- Overlay Bit Position (60xx,0102)
Không có khái niệm tương tự như Bits Store vì Lớp Plane luôn có số Bit bằng 1.
Trong một Thành phần Dữ liệu Overlay (60xx,3000), VR là OW được sử dụng phổ biến nhất. VR là OB chỉ được sử dụng trong trường hợp VR hiện trong Thành phần Dữ liệu.
Minh hoạ: Một Dữ liệu Điểm ảnh (pixel data) có 16 Bit (2 Byte) với một Overlay:
15 12 11 0
Overlay Pixel Sample
- Pixel:
Bit Allocated=16
Bit Stored= 12
High Bit=11
- Overlay:
Bit Allocated=16
Bit Position = 12
III.3.2. Mã hoá dạng nguyên gốc và nén
Dữ liệu điểm ảnh trong một Thành phần Dữ liệu Điểm ảnh được gửi đi có thể là dạng nguyên gốc hay dạng nén, điều này được xác định ngoài Chuẩn DICOM.
Nếu Dữ liệu Điểm ảnh được gửi đi dưới dạng nguyên gốc, VR =OW được sử dụng phổ biến. VR=OB có thể được sử dụng khi Bits Allocated có giá trị bé hơn hoặc bằng 8 và với Cú pháp Chuyển đổi qui định VR là hiện.
Các Điểm ảnh dạng nguyên gốc được mã hoá một cách liên tục , Bit đầu tiên của Điểm ảnh có thứ tự trước được theo sau bởi Bit cuối cùng của Điểm ảnh kế tiếp.
Với Dữ liệu Điểm ảnh được được mã hóa với VR=OW, thứ tự Byte của một Word 2-Byte được xác định theo kiểu Little/Big Endian phụ thuộc vào Cú pháp Chuyển đổi được thoả thuận lúc thiết lập Liên kết.
Khi Dữ Liệu Điểm ảnh được gửi đi với dạng nén, VR=OB được sử dụng. Các điểm ảnh được mã hoá theo qui trình mã hóa được định nghĩa bởi một Cú pháp Chuyển đổi được thoả thuận. Dòng Điểm ảnh được nén của Dữ liệu Điểm ảnh được phân ra thành các Đoạn (Fragment) với chiều dài hiện. Chuỗi các Đoạn của dòng Điểm ảnh được nén được kết thúc bởi dấu hiệu phân định, cho phép tiến trình mã hoá được thực hiện mà không biết tới chiều dài của dòng Điểm ảnh cho tới khi nó được mã hoá toàn bộ. Dạng nén hỗ trợ cả hình ảnh đơn khung lẫn đa khung.
DICOM hỗ trợ các kiểu nén sau:
- Jpeg Image Compression
- Runlength Endcoding Compression
- Jpeg-LS Image Compression
III.3.3. Dữ liệu Dạng sóng
Trong DICOM, sự trao đổi các tín hiệu phụ thuộc thời gian, hay dạng sóng, được mã hoá trong Thành phần Dữ liệu Dạng sóng (5400,1010).
Dữ liệu Dạng sóng được mã hoá với số Bit khác nhau (độ sâu mã hoá) thông qua Thành phần Dữ liệu Waveform Bits Allocated (5400,1004). Thành phần Dữ liệu này xác định kích thước của của mỗi mẫu Dữ liệu Dạng sóng trong Dữ liệu Dạng sóng). Các gía trị khả dĩ là 8 hay 16 Bit.
VR của Dữ liệu Dạng sóng là OW; OB chỉ được sử dụng khi Waveform Bits Allocated có giá trị 8 và với Cú pháp Chuyển đổi mang VR hiện.
III.4. Định danh Duy nhất (UID)
III.4.1. Khái niệm UID
UID là một chuỗi các số và dấu “.” để định danh một đối tượng duy nhất trong môi trường nhiều quốc gia, vị trí , nhà sản xuất và thiết bị. Mọi UID được sử dụng trong ngữ cảnh DICOM đều được đăng kí như được qui định bởi ISO 9834-3 để đảm bảo tính duy nhất toàn cầu.
Mỗi UID gồm có hai phần, một và một
UID=.
: định danh duy nhất một tổ chức (ví dụ: nhà sản xuất, NEMA..).
: định danh duy nhất đối tượng trong phạm vi của
Mỗi UID được sử dụng trong DICOM được định nghĩa và đăng kí theo một trong hai cách:
- Do DICOM định nghĩa và đăng kí UID
- Đăng kí và định nghĩa riêng
III.4.2. UID do DICOM định nghĩa
Là một số giới hạn các UID được DICOM định nghĩa và đăng kí và sử dụng trong Chuẩn. Tổ chức chịu trách nhiệm cho việc định nghĩa và đăng kí DICOM UID như vậy là NEMA.
VD: 1.2.840.10008.2.1 xác định một Cú pháp chuyển đổi có VR ẩn và Thứ tự byte kiểu Little Endian.
III.4.3. UID định nghĩa riêng
Được sử dụng phổ biến trong DICOM. Tuy nhiên, các UID này không được đăng kí bởi NEMA. Các tổ chức định nghĩa các UID riêng phải chịu trách nhiệm về tính hợp thức của các UID này (ít nhất phải chứa một như định nghĩa bởi ISO 9834-3. Các tổ chức định nghĩa UID riêng phải có trách nhiệm đảm bảo tính duy nhất của chúng.
III.5. Cú pháp Chuyển đổi
Cú pháp Chuyển đổi (tranfer syntax) là một bộ các qui tắc mã hoá thể hiện một hay nhiều Cú pháp Trừu tượng (abstract systax). Nó cho phép các Thực thể ứng dụng DICOM thoả thuận các công nghệ mã hoá chung mà chúng cùng hỗ trợ (ví dụ: thứ tự byte, nén..). Một Cú pháp Chuyển đổi là một Thuộc tính của một Ngữ cảnh Trình diễn, với một hay nhiều được thoả thuận lúc thiết lập một Liên kết giữa các Thực thể ứng dụng DICOM.
Tổ chức chịu trách nhiệm định nghĩa và đăng kí Cú pháp Chuyển đổi DICOM là NEMA. NEMA đảm bảo tính duy nhất cho mọi Tên Cú pháp Chuyển đổi DICOM.
Cách định nghĩa Cú pháp chuyên đổi riêng cũng được sử dụng. Tuy nhiên, nó không thuộc trách nhiệm của NEMA.
Cú pháp Chuyển đổi mặc định của DICOM là: VR hiện Little Endian (UID=1.2.840.10008.1.2).
Bảng III.5: Các Cú pháp Chuyển đổi DICOM
Cú pháp Chuyển đổi UID
Định nghĩa
1.2.840.10008.1.2
Dữ liệu thô, VR ẩn, Little Endian
1.2.840.10008.1.2.x
Dữ liệ thô, VR hiện
- x=1: Little Endian
-x =2: Big Endia
1.2.840.10008.1.2.4.xx
Nén JPEG
xx=50-64 : Lossy JPEG
xx=65-70: Lossless JPEG
1.2.840.10008.1.2.5
Mã hoá Lossess Runlength Endcoding
Chương IV
Trao đổi thông tin trong DICOM
IV.1. Mô hình tổng quát truyền tin DICOM
Trong DICOM, sự truyền tin có thể thực hiện theo hai cách sau:
- Thông qua mạng vật lý, dựa vào ranh giới Dịch vụ Tầng trên OSI
- Thông qua các phương tiện trung gian, dựa vào ranh giới Dịch vụ file DICOM
IV.2. Trao đổi thông tin thông qua mạng vật lý
IV.2.1. DICOM và Mô hình tham chiếu cơ bản OSI
Mô hình tham chiếu cơ bản OSI được sử dụng để mô hình hoá sự kết nối các thiết bị hình ảnh y tế. Mô hình được chia làm bảy tầng. DICOM sử dụng mô hình Dịch vụ Tầng trên OSI để phân chia sự trao đổi các Bản tin DICOM ở tầng ứng dụng khỏi các hỗ trợ truyền thông cung cấp bởi các tầng dưới. Ranh giới Dịch vụ Tầng trên cho phép các Thực thể ứng dụng ngang hàng thiết lập sự Liên kết, truyền Bản tin và chấm dứt Liên kết.
Các giao thức Tầng trên DICOM liên quan đến các Tầng Phiên, Trình diễn và ứng dụng của mô hình tham chiếu OSI. Các giao thức này cung cấp Dịch vụ Tầng trên. Các Dịch vụ Tầng trên là thành phần của Dịch vụ ACSE và Dịch vụ Tầng Trình diễn OSI.
Các Dịch vụ Tầng trên cho Thực thể ứng dụng DICOM gồm:
A-ASSOCIATE: Thiết lập lên liên kết giứa hai AE được thực hiện thông qua các hàm nguyên thuỷ ASCE A-ASSOCIATE (yêu cầu, chỉ báo, trả lời xác nhận). Đây là dịch vụ có xác nhận.
A-RELEASE: Sự giải phóng liên kết đầy đủ giữa hai AE được thực hiện thông qua các hàm nguyên thuỷ ASCE-REASE (yêu cầu, chỉ báo, trả lời và xác nhận). Đây là dịch vụ có xác nhận.
A-ABORT: Dịch vụ ASCE A-ABORT được sử dụng bởi đối tượng yêu cầu (requestor) trong hai AE để tạo một giải phóng liên kết không bình thường. Đây là dịch vụ không xác nhận.
A-P-ABORT: Dịch vụ ASCE A-ABORT được sử dụng bởi đối tượng cung cấp dịch vụ tầng trên (UL service-provider) để báo hiệu giải phóng liên kết do có sự cố ở các dịch vụ Tầng Trình diễn (Presentation Layer) phía dưới.
P-DATA: Dịch vụ Application P-DATA (của Tầng trình diễn) được dùng để bởi một trong hai AE để tạo ra sự trao đổi thông tin ứng dụng (VD: bản tin DICOM). Một liên kết cung cấp sự trao đổi đồng thời theo hai hướng.
LLC
ISO NETWORK
ISO TRANSPORT
ISO SESSION KERNEL
ISO PRESENTATION
ISO Association Control Service Element (ACSE)
TCP
IP
Trao đổi Bản tin ứng dụng DICOM
ứng dụng hình ảnh y tế
Giao thức Tầng trên DICOM cho TCP/IP
Ethernet, FDDI,ISDN, ..
Ranh giới Dịch vụ Tầng trên
Dịch
vụ
Giao thức
Môi trường mạng
Hình vẽ IV.2.1. DICOM và mô hình OSI
IV.2.2 Cấu trúc Tầng ứng dụng DICOM
Thực thể ứng dụng DICOM sử dụng các dịch vụ Liên kết và Trình diễn của Dịch vụ Tầng trên OSI. Thành phần Dịch vụ Điều khiển Liên kết (ACSE) hỗ trợ Dịch vụ Tầng Trình Diễn với dịch vụ thiết lập và chấm dứt liên kết. Với TCP/IP, chức năng tương tự ASCE được cung cấp bởi Dịch vụ Tầng trên DICOM. Cho các tầng của liên kết point- to- point, một bộ tối thiểu của ACSE được cung cấp bởi Dịch vụ Mạng/Phiên/ Chuyển vận.
Thực thể ứng dụng DICOM sử dụng các dịch vụ cung cấp bởi Thành phần Dịch vụ Bản tin DICOM (DIMSE). DIMSE định ra hai bộ dịch vụ:
-DIMSE-C hỗ trợ thao tác kết hợp với các Lớp SOP Phức và khả dụng với các phiên bản trước của Chuẩn.
-DIMSE-N cung cấp các thao tác kết hợp với các Lớp SOP Thường và cung cấp một bộ mở rộng các thao tác và thông báo hướng đối tượng.
Thực thể ứng dụng DICOM
Thoả thuận Liên kết
DIMSE
(DIMSE-C và DIMSE-N: Thao tác và Thông báo)
Dịch vụ Dữ liệu Trình Diễn Tầng Trên
Dịch vụ Tầng trên DICOM
Thông tin Liên kết ứng dụng
Thông tin Liên kết DIMSE
Các đoạn Bản tin
Đối tượng Thông tin
Thường Phức
- Bệnh nhân - Hình ảnh CT
- Nghiên cứu - Hình ảnh MR
- Khám - Hình ảnh CR
Lớp Dịch vụ
- Nghiên cứu - Lưu trữ
- Hình ảnh Bệnh nhân - In
- Kết quả - Chất vấn/Truy vấn
Hình vẽ IV.2.2: Cấu trúc tầng ứng dụng DICOM
IV.2.3. Cấu trúc bản tin DICOM
Thông tin được truyền thông qua giao diện mạng trong một Bản tin DICOM (DICOM Massage). Một Bản tin được cấu tạo bởi một Bộ lệnh (Command Set), theo sau nó là một Bộ Dữ liệu (Data Set) phụ thuộc.
Bộ Lệnh Bộ Dữ liệu
…
Nhãn Chiều dài Giá trị
Hình vẽ IV.1: Cấu trúc Bản tin DICOM
IV2.3.1. Bộ Lệnh
Bộ Lệnh được sử dụng để chỉ ra các thao tác/thông báo được thực hiện trên hay với Bộ Dữ liệu.
Một Bộ Lệnh được cấu tạo bởi các Thành phần Lệnh (Command Element). Thành phần Lệnh bao gồm các giá trị được mã hóa cho mỗi trường riêng của Bộ Lệnh trên một ngữ nghĩa được định ra bởi giao thức DIMSE. Mỗi Thành phần lệnh được cấu tạo bởi một Nhãn (Tag), một Chiều dài Giá trị (Value Lengh), và một Trường Giá trị (Value Field).
IV.2.3.2. Thành phần Lệnh
Một Thành phần Lệnh trong một Bộ lệnh có trình tự nhất định, cụ thể là tăng Nhãn Thành phần Lệnh (Command Tag Element). Một Nhãn Thành phần Lệnh xác định duy nhất một Thành phần Lệnh và xuất hiện nhiều nhất một lần trong Bộ Lệnh. Cách mã hoá của Bộ Lệnh là Little Endian Byte (Mã hoá từ phải sang trái). Các yêu cầu sự tồn tại của một Thành phần Lệnh trong một Bộ lệnh được xác định trong giao thức DIMSE.
Thành phần Lệnh được cấu tạo bởi ba trường, cụ thể là:
- Nhãn Thành phần Lệnh: Là một cặp thứ tự số nguyên không dấu 16-bit thể hiện số Nhóm và số Thành phần.
- Chiều dài Giá trị: Một số nguyên không dấu 32-bit thể hiện toàn bộ Chiều dài bằng số Byte (số chẵn) mà tạo ra Giá trị. Nó không bao hàm chiều dài của Nhãn Thành phần Lệnh và trường Chiều dài Lệnh.
- Trường Giá trị: Một số chẵn các Byte chứa Giá trị của Thành phần Lệnh.
Loại Lệnh của các Giá trị được lưu trữ trong trong trường này được xác định bởi VR (Value Representation) của Thành phần Lệnh. VR của một Thành phần Lệnh có thể được định nghĩa sử dụng Từ điển Lệnh (Comand Dictionary).
VM (Value Multiplicity) chỉ ra bao nhiêu Giá trị với VR có thể nằm trong Trường Giá trị. Nếu VM lớn hơn một, các Giá trị này sẽ được phân định ranh giới.
IV.2.4. Dịch vụ DICOM
DIMSE hỗ trợ sự truyền tin giữa các DIMSE-service-user (Sử dụng dịch vụ DICOM) tương đương. Một DIMSE-service-user đóng một trong hai vai trò:
- DIMSE-service-user Gọi.
- DIMSE-service-user Thực hiện.
DIMSE-service-user sử dụng Dịch vụ Nguyên thuỷ (service promitive) được cung cấp bởi DIMSE-service-provider (Cung cấp dịch vụ DICOM). DIMSE-service-provider là sự trừu tượng hoá thực thể cung cấp các dịch vụ DICOM tới các DIMSE-service-user ngang hàng. Một Dịch vụ Nguyên thuỷ là một trong các loại sau:
Request Promitive (Yêu cầu nguyên thuỷ)
Indication Promitive (Chỉ báo nguyên thuỷ)
Response Primitive (Trả lời nguyên thuỷ)
Confirm Primitive (Xác nhận nguyên thuỷ)
Các dịch vụ nguyên thuỷ này được sử dụng để hoàn thành một dịch vụ DIMSE.
DIMSE-service-user Gọi đưa ra một Yêu cầu nguyên thuỷ tới DIMSE-service-provider.
DIMSE-service-provider nhận Yêu cầu nguyên thuỷ từ DIMSE-service-user và đưa ra một Chỉ báo Nguyên thuỷ tới DIMSE-service-user Thực hiện.
DIMSE-service-user Thực hiện nhận Chỉ báo nguyên thuỷ từ DIMSE-service-provider và thực hiện dịch vụ được yêu cầu.
DIMSE-service-user Thực hiện đưa ra một Trả lời nguyên thuỷ tới DIMSE-service-provider.
DIMSE-service-provider nhận Trả lời nguyên thuỷ từ DIMSE-service-user và đưa ra một Xác nhận nguyên thuỷ tới DIMSE-service-user gọi.
DIMSE-service-user nhận Xác nhận nguyên thuỷ từ DIMSE-service-provider đã hoàn thành dịch vụ DIMSE
Bản tin
(Lệnh yêu cầu và Dữ liệu liên quan)
Trả lời nguyên thuỷ
DIMSE-Service Provider
Xác nhận nguyên thuỷ
Chỉ báo nguyên thuỷ
Yêu cầu nguyên thuỷ
Bản tin
(Trả lời Lệnh và Thông tin liên quan)
DIMSE-Service-User Gọi
DIMSE-Service-user Thực hiện
Hình vẽ IV.4.1: Dịch vụ nguyên thuỷ của DIMSE
IV.2.4.1. Các loại dịch vụ
DIMSE cung cấp hai loại dịch vụ truyền thông tin
- Dịch vụ Thông báo (notification).
- Dịch vụ Thao tác(operation).
Dịch vụ Thông báo dùng cho một Thực thể ứng dụng DICOM thông báo cho thực thể khác biết về một sự kiện xảy ra hay sự thay đổi trạng thái. Định nghĩa của thông báo và cách ứng xử logic của Thực thể ứng dụng phụ thuộc vào Lớp dịch vụ và Định nghĩa Đối tượng Thông tin.
Dịch vụ Thao tác dùng cho một Thực thể ứng dụng DICOM yêu cầu một thao tác phải được thực hiện nhờ một SOP Cụ thể được quản lí bởi một Thực thể ứng dụng DICOM khác.
IV.2.4.2. Tương tác DIMSE-service-user
DIMSE nhận các yêu cầu thông báo, thao tác và thông tin liên quan từ DIMSE-service-user. Hai Thực thể ứng dụng DICOM đóng vai trò như là các DIMSE-service-user ngang hàng trao đổi các thông báo và thao tác.
Một thông báo và thao tác được thi hành chính là tương tác Yêu cầu/Trả lời được thực hiện trong Giao kết ứng dụng. Điển hình là, một DIMSE-service-user yêu cầu một Thao tác cụ thể được thực hiện (hay một thông báo được đưa ra) và DIMSE-service-user khác cố gắng thực hiện Thao tác (hay đưa ra Thông báo) rồi báo cáo kết quả.
Thông báo
Thao tác
DIMSE-Service-User -Gọi
DIMSE-Service-User
(SCU)
DIMSE-Service-User -Thực hiện
DIMSE-Service-User -Thực hiện
DIMSE-Service-User
(SCP)
DIMSE-Service-Use- Gọi
Hình IV.4.2: Dòng thông báo và thao tác
IV.2.4.3. Chế độ dịch vụ
Các Thao tác và Thông báo, trong một Giao kết, được sử dụng dưới một trong hai chế độ:
-Đồng bộ (Synchronous)
-Dị bộ (Asynchronous)
Trong chế độ đồng bộ, DIMSE-service-user Gọi, trong một Liên kết được thiết lập, đòi hỏi một Trả lời từ DIMSE-service-user Thực hiện trước khi gọi một Thao tác hay Thông báo khác.
Trong chế dị đồng bộ, DIMSE-service-user Gọi, trong một Giao kết được thiết lập, có thể tiếp tục gọi ra các Thao tác và Thông báo mà không phải chờ Trả lời.
Chế độ được dùng (đồng bộ hay dị bộ) được định rõ vào thời điểm thiết lập Liên kết. Chế độ dị bộ là mặc định.
IV.2.3.4. Các dịch vụ Liên kết
a. Thiết lập Liên Kết
Dịch vụ A-ASSOCIATE được gọi ra bởi một DIMSE-service-user để thiết lập một Liên kết với một DIMSE-service-user ngang hàng. Sự thiết lập Liên kết luôn là giai đoạn đầu tiên của Trao đổi Bản tin DICOM.
b. Giải phóng Liên kết
Dịch vụ A-RELEASE được gọi ra bởi một DIMSE-service-user để chấm dứt theo chủ định của một Liên kết giữa các DIMSE-service-user ngang hàng.
Dịch vụ A-ABORT được gọi ra bởi một DIMSE-service-user để yêu cầu chấm dứt đột ngột Liên kết giữa các DIMSE-service-user ngang hàng.
IV.2.3.5. Các dịch vụ DIMSE
Vì cách các Thao tác cung cấp cho SOP Phức Cụ Thể (Composite SOP Instance) khác so với các Thao tác và Thông báo cung cấp cho SOP Thường Cụ thể (Nomalized SOP Instance) có hai nhóm Dịch vụ DIMSE được định nghĩa:
-DIMSE-N:Tương thích cho Lớp SOP Thường
-DIMSE-C:Tương thích cho Lớp SOP Phức
Tên
Nhóm
Loại
C-STORE
DIMSE-C
Thao tác
C-GET
DIMSE-C
Thao tác
C-MOVE
DIMSE-C
Thao tác
C-FIND
DIMSE-C
Thao tác
C-ECHO
DIMSE-C
Thao tác
N-EVENT-REPORT
DIMSE-N
Thông báo
N-GET
DIMSE-N
Thao tác
N-SET
DIMSE-N
Thao tác
N-ACTION
DIMSE-N
Thao tác
N-CREAT
DIMSE-N
Thao tác
N-DELETE
DIMSE-N
Thao tác
IV.2.3.5.1. Dịch vụ DIMSE-C
Các dịch vụ DIMSE-C cho phép một Thực thể ứng dụng DICOM yêu cầu một Thao tác bởi một Thực thể ứng dụng khác trên SOP Phức Cụ thể. Các Thao tác này tương thích với các các phiên bản trước của Chuẩn. DIMSE-C chỉ cung cấp các dịch vụ Thao tác.
Các dịch vụ Thao tác
- Dịch vụ C-STORE được gọi ra bởi một DIMSE-service-user để yêu cầu lưu trữ SOP Phức Cụ với một DIMSE-service-user ngang hàng.
- Dịch vụ C-FIND được gọi ra bởi một DIMSE-service-user để đối sánh một chuỗi Thuộc tính với các Thuộc tính của bộ SOP Cụ thể được quản lí bởi một DIMSE-service-user ngang hàng. Dịch vụ C-FIND trả về cho mỗi sự đối sánh một danh sách các Thuộc tính cần tìm và các giá trị của chúng.
- Dịch vụ C-GET được gọi ra bởi một DIMSE-service-user để tìm thông tin cho một hay nhiều SOP Phức Cụ thể từ một DIMSE-service-user ngang hàng, dựa vào các Thuộc tính được cung cấp bởi DIMSE-service-user Gọi
- Dịch vụ C-MOVE được đưa ra bởi một DIMSE-service-user để chuyển thông tin cho một hay nhiều SOP Phức Cụ thể từ một DIMSE-service-user ngang hàng, tới DIMSE-service-user thứ ba, dựa trên các Thuộc tính được cung cấp bởi DIMSE-service-user Gọi.
-Dịch vụ C-ECHO được gọi ra bởi một DIMSE-service-user để xác minh sự truyền tin giữa hai đầu với một DIMSE-service-user ngang hàng.
IV.2.3.5.2. Các dịch vụ DIMSE-N
Các dịch vụ DIMSE-N cung cấp cả dịch vụ Thao tác và Thông báo khả dụng với các SOP Thường Cụ Thể.
Dịch vụ Thông báo
DIMSE-N cung cấp một dịch vụ Thông báo đơn là N-EVENT-REPORT. Dịch vụ N-EVENT-REPORT được gọi ra bởi một DIMSE-service-user để báo cáo một sự kiện ở SOP Cụ Thể với một DIMSE-service-user ngang hàng. Dịch vụ này là một dịch vụ được xác nhận và đòi hỏi phải được trả lời.
Dịch vụ Thao tác
DIMSE-N cung cấp các dịch vụ Thao tác sau, tất cả đều là dịch vụ được xác nhận và vì thế đòi hỏi phải có trả lời:
- Dịch vụ N-GET được gọi bởi một DIMSE-service-user để yêu cầu truy vấn thông tin bởi một DIMSE-service-user ngang hàng
- Dịch vụ N-SET được gọi bởi một DIMSE-service-user để yêu cầu sự sửa đổi thông tin từ một DIMSE-service-user ngang hàng
- Dịch vụ N-ACTION được gọi bởi một DIMSE-service-user để yêu cầu một DIMSE-service-user ngang hàng thực hiện một hành động
- Dịch vụ N-CREATE được gọi bởi một DIMSE-service-user để yêu cầu một DIMSE-service-user ngang hàng tạo ra một trường hợp cụ thể (instance) của một Lớp SOP.
Dịch vụ N-DELETE được gọi bởi một DIMSE-service-user để yêu cầu một DIMSE-service-user ngang hàng xoá một trường hợp cụ thể (instance) trong một Lớp SOP.
IV.3. Trao đổi thông tin thông qua phương tiện trung gian
IV.3.1. Mô hình Lưu trữ Trung gian DICOM
Mô hình Lưu trữ Trung gian DICOM (DICOM Media Storage Model) tập trung vào các khía cạnh liên quan đến trao đổi dữ liệu thông qua phương tiện trung gian cầm tay. Nó gắn liền với cấu trúc dữ liệu và các qui tắc liên quan ở các tầng khác nhau để đạt được khả năng đồng hoạt động thông qua trao đổi trung gian. Các Dịch vụ xác định mô hình này là các đường biên giới của các tầng chức năng.
Lớp Khuôn dạng Trung gian
Khuôn dạng Trung gian
ví dụ: Cấu trúc Dữ liệu của một Hệ thống file
Trung gian Vật lý
Lưu trữ đặc tính của phương tiên trung gian
Ví dụ: CD-R, 90mm MOD, 130mm MOD..
Ranh giới Dịch vụ ứng dụng
Phụ thuộc vào Đối tượng Thông tin và Lớp Dịch vụ Lưu Trữ trung gian
Ranh giới Dịch vụ File DICOM
Độc lập Trung gian Vật lý và Khuôn dạng Trung gian
Ranh giới Dịch vụ Truy nhập Trung gian Vật Lý
Tương ứng với Trung gian Vật lý
Thực thể ứng dụng
SOP
Khuôn dạng file DICOM
Thư mục Cơ sở
Lớp Khuôn dạng Dữ liệu
Lớp Khuôn dạng Vật lý
Hình IV.3.1: Mô hình lưu trữ trung gian DICOM
Mô hình Lưu trữ Trung gian DICOM chia làm ba thành phần:
IV.3.1.1. Lớp Trung gian Vật Lí
Đặc trưng Lớp Trung gian Vật lí (Physical Media Layer) bao gồm các thông số hình thái phương tiện vật lí trung gian, chiều, đặc điểm cơ khí và các thuộc tính ghi. Lớp này cũng định nghĩa cách tổ chức và nhóm gộp các Bit được ghi .
Một ví dụ của Lớp Trung Gian Vật lí trong môi trường máy tính là đĩa mềm loại 3 1/2 inch, hai mặt, mật độ cao.
IV.3.1.2. Lớp Khuôn dạng Trung gian
Tại Lớp Khuôn dạng Trung gian (Media Format Layer), dòng Bit Trung gian Vật Lí được tổ chức theo các cấu trúc riêng biệt. Cấu trúc file và các cấu trúc thư mục liên quan được định nghĩa cho phép truy nhập và quản lí không gian Trung gian Vật lí.
Lớp này thường tương ứng với môi trường Hệ điều hành. Lấy ví dụ, một Lớp Khuôn dạng Trung gian định nghĩa với loại đĩa mềm 3 1/2 inch là cấu trúc dữ liệu được sử dụng bởi hệ điều hành và các hệ thồng file máy tính cá nhân khác nhau.
IV.3.1.3. Lớp Khuôn dạng Dữ liệu DICOM
Lớp Khuôn dạng Dữ liệu DICOM (DICOM Data Format Layer) chia làm các thành phần định nghĩa:
- Các Lớp SOP Lưu trữ Trung gian DICOM và các Định nghĩa Đối tượng Thông tin liên quan.
- Khuôn dạng file DICOM
- Lớp SOP Thư Mục Lưu Trữ Trung gian DICOM
- Sơ lược ứng dụng Lưu trữ Trung gian
- Sơ lược Bảo mật cho Lưu trữ Trung gian
a. Các Lớp SOP Lưu trữ Trung gian
Các Lớp SOP và các Định nghĩa Đối tượng Thông tin (IOD) liên quan được sử dụng để mang thông tin hình ảnh tại Lớp Khuôn dạng Dữ liệu. Các Lớp SOP và IOD được sử dụng cho Lưu trữ Trung gian phải tuân theo các cơ chế được thiết lập ở PS 3.3 và PS 3.4. Một ví dụ về IOD như thế là hình ảnh, thông tin bệnh nhân, kết quả..
Sử dụng các DICOM IOD kết hợp với các Thao tác Lưu trữ Trung gian tạo lên một số Lớp SOP Lưu trữ Trung gian. Các Thao tác Trung gian (ví dụ: đọc, ghi, xoá,..) được thực hiện thông qua Dịch vụ file DICOM.
Khái niệm Lớp SOP trong ngữ cảnh Lưu trữ Trung gian tương đương với khái niệm Lớp SOP trong ngữ cảnh mạng. Cả IOD Thường, Phức và các Lớp SOP đều được sử dụng trong ngữ cảnh Lưu trữ Trung gian.
b. Khái niệm Khuôn dạng File DICOM
Các Bộ dữ liệu được đưa vào định dạng trong Trung gian vật lý dưới dạng các file DICOM, dựa vào các Dịch vụ file DICOM.
c. Thư mục Thông tin Y tế DICOM
Để thuận lợi cho cho việc quản lí và truy nhập thông tin hình ảnh và các thông tin liên quan, các Lớp SOP được tạo ra cho lưu trữ trung gian có thể được sử dụng để tạo tham chiếu (hay thư mục). Các trường hợp cụ thể của các Lớp SOP này là được mang trong một file với File ID là DICOMDIR
d. Sơ lược ứng dụng Lưu trữ Trung gian DICOM
Một Sơ Lược ứng dụng Lưu trữ Trung gian định nghĩa sự lựa chọn tại các tầng khác nhau của Mô hình Lưu trữ Trung gian khả dụng với các yêu cầu hay ngữ cảnh cụ thể mà trong đó sự trao đổi dữ liệu được thực hiện. Những lựa chọn như vậy thường được xác định như là một Sơ lược ứng dụng Lưu trữ Trung gian để đảm bảo chắc chắn khả năng đồng hoạt động giữa các hệ thống cùng tuân theo một Sơ Lược ứng dụng Lưu trữ Trung gian.
IV.3.2. Khuôn dạng file DICOM
File DICOM là đơn vị dữ liệu lưu trữ Bộ dữ liệu thể hiện một SOP Cụ thể liên quan đến một DICOM IOD. Trong File DICOM, Bộ Dữ liệu được đặt sau Thông tin Đầu File (File Meta Information). Mỗi File DICOM chỉ bao hàm một SOP Cụ thể.
Preamble
128 byte đưa về 00H
Prefix
Chuỗi kí tự “DICM”. Dùng để nhận diện file DICOM
Thành phần Đầu DICOM (Tag| VR| VL| Value)
Thành phần Đầu DICOM (Tag| VR| VL| Value)
Thành phần Dữ liệu (Tag| VR (nếu có)| VL| Value)
Thành phần Dữ liệu (Tag| VR (nếu có)| VL| Value)
Thành phần Dữ liệu (Tag| VR (nếu có)| VL| Value)
Thành phần Dữ liệu Hình ảnh
Thông tin
Đầu File
DICOM
Bộ
Dữ
liệu
Hình IV.3. Khuôn dạng File DICOM.
a. Thông tin Đầu File DICOM
Thông tin Đầu File bao gồm bao gồm thông tin xác định về thuộc tính của Bộ Dữ liệu được đưa vào file. Nó bắt đầu bởi 128 byte Mở đầu File (tất cả được đưa về 00H). Sau đó là 4 byte kí tự “DICM”. Sau đó là các Thành phần Đầu File. Các thành phần đầu file này là bắt buộc đối với mọi File DICOM. Thành phần Đầu File là các Thành phần Dữ liệu có Nhãn dạng (0002,xxxx), được mã hoá sử dụng Cú pháp Chuyển đổi VR ẩn, Little Endian.
b. Bộ Dữ liệu
Mỗi File chỉ chứa một Bộ Dữ liệu thể hiện một SOP Cụ thể duy nhất liên quan đến một Lớp SOP đơn (và IOD tương ứng).
Một File có thể chứa nhiều hình ảnh khi các IOD được xác định mang nhiều khung.
Cú pháp Chuyển đổi được sử dụng để mã hoá Bộ Dữ liệu được xác định duy nhất thông qua UID Cú pháp Chuyển đổi trong Thông tin Đầu File DICOM.
c. Hỗ trợ Thông tin Quản lí File
Khuôn dạng File DICOM không không bao gồm thông tin quản file để tránh sự trùng lặp với chức năng liên quan ở Lớp Khuôn dạng Trung gian. Nếu cần thiết cho một Sơ lược ứng dụng DICOM, các thông tin sau sẽ được đưa ra bởi một Lớp Khuôn dạng Trung gian:
Định danh sở hữu nội dung File
Thông tin truy cập (ngày và giờ tạo)
Điều khiển truy cập File ứng dụng
Điều khiển truy cập trung gian vật lí (ví dụ: bảo vệ ghi)
d. Khuôn dạng File DICOM An toàn
Một Khuôn dạng File DICOM An toàn bao gồm một File DICOM được mã hoá với một Cú pháp Bản tin Mật mã được định nghĩa trong RFC 2630. Phụ thuộc vào thuật toán bảo mật sử dụng cho mã hoá, một File DICOM An toàn có thể cung cấp các thuộc tính an toàn sau:
Bảo mật dữ liệu
Xác nhận nguồn gốc dữ liệu
Tính toàn vẹn dữ liệu
IV.3.3. Các Dịch vụ File DICOM
IV.3.3.1. Bộ File
Dịch vụ File DICOM đưa ra khả năng tạo và truy nhập một hay nhiều File trong một Bộ File. Một Bộ File là là tập hợp các file có cùng không gian tên chung với một Chỉ số File (File ID) duy nhất.
Mỗi Bộ File được xác định duy nhất bởi một Chỉ số Duy nhất Bộ file (File-set UID), được định ra theo qui tắc đăng kí trong Chuẩn (ở PS 3.5). Khi các File được thêm vào hay loại ra khỏi Bộ file, Chỉ số Duy nhất Bộ file sẽ không đổi.
Một Bộ File cũng có thể được xác định bởi một Chỉ số Bộ File (File-set ID), đơn giản khi xác định (nhưng trên tổng thể không phải là duy nhất). Một Chỉ số Bộ File có thể được kết hợp hay ánh xạ với một định danh chính xác ở Lớp Khuôn dạng Trung gian.
Một Miêu tả Bộ File (File “readme”) có thể được đi kèm với một Bộ File.
Một Bộ file …
Bộ File
File B chứa một SOP Cụ thể
Thông tin
Đầu File
Bộ Dữ liệu
File C chứa một SOP Cụ thể
Thông tin
Đầu File
Bộ Dữ liệu
File A chứa một SOP Cụ thể
Thông tin
Đầu File
Bộ Dữ liệu
Hình V.3.1. Bộ File
IV.3.3.2. Các Chỉ số File
Các File được định danh bởi Chỉ số File (File ID), là duy nhất trong một Bộ File. Một Chỉ số File là một chuỗi trình tự các Thành phần Chỉ số File. Một Chỉ số File có thể chứa từ một tới tám thành phần. Mỗi Thành phần là một chuỗi từ một tới tám kí tự từ bộ kí tự G0 của ISO 8859.
Cấu trúc của các Chỉ số File như vậy cho phép Dịch vụ File DICOM lựa chọn File theo chế độ phân cấp. Không có ý nghĩa nào khác trong cấu trúc và nội dung của một của các Chỉ số File.
Một Chỉ số File DICOM tương ứng như khái niệm thường dùng “đường dẫn” nối đến một “tên File”. VD: một Chỉ số File hợp lệ gồm có 4 Thành phần, được chia bởi dấu gạch chéo
SUBDIR\SUBDIR2\SUBDIR3\ABCDEFGH.
IV.2.3.3. Các Dịch vụ và Chức năng Quản lí File
Khi một Thực thể ứng dụng DICOM tham gia trao đổi thông tin bằng Lưu trữ Trung gian, thông qua Dịch vụ File DICOM, chúng thực hiện một số Thao tác Lưu trữ Trung gian sau:
M-WRITE, tạo các File mới trong một bộ File và gán cho chúng một Chỉ số File.
M-READ, để đọc các File đã tồn tại dựa vào Chỉ số File của chúng
M-DELETE, để xoá File đang tồn tại dựa trên chỉ số File của chúng
M-INQUIRE FILE SET, để biết không gian trống để tạo File mới trong Bộ Dữ liệu
M-INQUIRE FILE, để biết ngày, giờ tạo File (hoặc cập nhật gần nhất nếu có thể) với mọi File trong Bộ File.
Một Thực thể ứng dụng DICOM có thể đóng một hay nhiều trong ba vai trò sau:
Tạo Bộ File (FSC)
Đọc Bộ File (FSR)
Cập nhật Bộ File (FSU)
Dựa trên các vai trò được cung cấp bởi Thực thể ứng dụng DICOM, Dịch vụ File DICOM sẽ hỗ trợ các Thao tác Trung gian được định nghĩa như sau:
Vai trò Thao tác Trung gian
M-WRITE
M-READ
M-DELETE
M-INQUIRE FILE SET
M-INQUIRE FILE
FSC
Bắt buộc
Không yêu cầu
Không yêu cầu
Bắt buộc
Không yêu cầu
FSR
Không yêu cầu
Bắt buộc
Không yêu cầu
Không yêu cầu
Bắt buộc
FSC+FSR
Bắt buộc
Bắt buộc
Không yêu cầu
Bắt buộc
Bắt buộc
FSU
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
FSU+FSC
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
FSU+FSR
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
FSU+FSC+FSR
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
Bắt buộc
IV.2.3.4. Truy nhập Nội dung File
Dịch vụ DICOM đưa ra khả năng truy nhập nội dung của bất cứ File hay bộ File nào. Nội dung File là một chuỗi trình tự một hay nhiều Byte.
Dịch vụ File DICOM sẽ đưa ra các khả năng sau:
Một FSR hay FSU thực hiện một M-READ để đọc không hay nhiều Byte trong nội dung File.
Một FSC hay FSU thực hiện một M-WRITE để viết một hay nhiều Byte tạo nội dung File
IV.3.3.5. Bộ Kí tự
Chỉ số File và Chỉ số Bộ File là chuỗi kí tự được tạo ra bởi một nhóm kí tự thuộc bộ kí tự G0 của ISO 8859. Đó là:
A, B, C, D, E, F, G, H, J, K, L, M, N, O, P, Q, R, S, T, U,V, W, X, Y, Z
1, 2, 3, 4, 5, 6, 7, 8, 9, và _
IV.3.3.6. Chỉ số File DICOMDIR
Một File với Chỉ số File, DICOMDIR, sẽ tồn tại như là một thành phần của mọi Bộ dữ liệu. Chỉ số File này được tạo bởi một Thành phần. Nó chứa Thư mục Trung gian DICOM bao gồm các thông tin chung về toàn bộ Bộ Dữ liệu. Các thông tin chung này luôn luôn tồn tại, tuy nhiên nội dung của thư mục có thể là bỏ trống trong trường hợp không cần thiết. Nếu DICOMDIR không tồn tại trong Bộ Dữ liệu, Bộ Dữ liệu không tuân theo PS 3.10 của Chuẩn DICOM. DICOMDIR không tham chiếu đến các File nằm ngoài Bộ File mà nó nằm trong đó.
DICOMDIR sử dụng Explicit VR Little Endian Tranfer Syntax (UID=1.2.840.10008.1.2.1) để mã hoá Lớp SOP Thư mục Lưu trữ Trung gian.
Các file đính kèm theo tài liệu này:
- DAN318.doc