Тарас Захарченко
[email protected]
О чем же стандарт DICOM? Область действия: передача, хранение, структуризация, вывод медицинских изображений, распределение задач для медицинской аппаратуры. На рис. 1. изображен один из вариантов DICOM сети.
Рис. 1. Пример DICOM сети.
Файлы DICOM Обычно разработка DICOM проектов начинается с фразы: «Мне нужно открыть этот чертов файл!». Начнем же с этого и мы. «Чертовы DICOM файлы» имеют теговую организацию с вложенной иерархией. Чем то похоже на XML, только нет закрывающих тегов, а имена тегов совсем непонятны. И так, в DICOM есть 27 типов данных, которые представлены части PS3.7 стандарта (табл. 6.2-1). К ним относятся строки, текст, числа, последовательности, двоичные данные и т. п. Все не перечислить. Тег имеет 4-байтное имя, которое в Стандарте записывают в формате (gggg, eeee). Где gggg обозначает группу, к которой относится тег, а eeee – имя элемента в этой группе. Такая структура имен тегов позволяет выполнить логическую группировку тегов. Поддерживаются так же и пользовательские теги. Для этого в стандарте выделены все нечетные номера групп. Таким образом, если тег имеет нечетный номер группы, то он автоматом становится пользовательским и игнорируется аппаратурой другого производителя DICOM- совместимого оборудования. Старайтесь опасаться конфликтов на почве пользовательских тегов. Каждый тег имеет один из 27 типов данных. Все теги описаны в части P3.6 стандарта, раздел 6. Данные одного тега можно закодировать несколькими способами: 1. С неявным объявлением типа данных. 2. С явным объявлением типа данных кроме типов OB, OW, OF, SQ, UT, UN.
Тарас Захарченко
[email protected] 3. С явным объявлением типа данных для типов OB, OW, OF, SQ, UT, UN.
Рис. 2. С явным объявлением длины блока данных.
Рис. 3. С неявным объявлением длины блока данных кроме типов OB, OW, OF, SQ, UT, UN.
Рис. 4. С неявным объявлением длины блока данных для типов OB, OW, OF, SQ, UT, UN. Поле VR обозначает тип данных. Длина блока данных должна быть четной. Элементы одной группы записывают в порядке увеличения их номера. В части PS3.3 описаны и DICOM объекты, которые имеют вышеописанную теговую структуру. Ниже приведен пример DICOM объекта (рис. 4). Учтите, что не все элементы DICOM объектов должны заполнятся согласно Cтандарту. некоторые можно опускать, некоторые добавляются только при определенном условии. Так элементы, которые в стандарте обозначены как 1, должны обязательно присутствовать в DICOM объекте и быть инициализированы. Элементы, обозначены как 2 должны обязательно присутствовать в DICOM объекте и быть инициализированными.
Тарас Захарченко
[email protected] Элементы с обозначением 1С и 2С должны присутствовать только при определенном условии. А элементы типа 3 могут и вовсе не присутствовать в DICOM объекте.
Рис. 5. Пример DICOM объекта. Отдельного внимания заслуживает запись последовательностей (SQ). Их длина может быть объявленной, а может и нет. В случае, если длина не объявлена используется разграничитель из 4 байт (FFFE, E00D). А в поле длины записываются все единичные биты. На рисунке 5 изображен способ кодирования последовательностей с явным объявлением длины и неявным объявлением типа.
Рис. 6. Кодирование последовательностей с явным объявлением длины. На рисунке 6 изображен способ кодирования последовательностей с неявным объявлением длины и явным объявлением типа.
Тарас Захарченко
[email protected]
Рис. 7. Кодирование последовательностей с неявным объявлением длины и явным объявлением типа. Файлы изображений DICOM могут быть сжатыми, сжатыми без потерь не сжатыми. Обычно на каждый цвет в файлах DICOM отводится по 16 бит (65535 оттенков). Таким образом, что бы закодировать цветной пиксель, необходимо 16x3 = 48 бит. Что в два раза больше, чем могут отобразить современные потребительские мониторы. В связи с этим для вывода информации DICOM необходимы специальные мониторы. Графическая подсистема так же должна быть способна работать с цветами 48 бит. Кроме того могут возникнуть проблемы с локализацией. Обычно иностранные имена пишутся транслитом, хотя есть возможность поменять т. н. репертуар символов (что то вроде кодировки).
Иерархия организации данных в DICOM На рисунке 8 изображена иерархия данных в DICOM. 1. Каждый пациент проходит множество клинических исследований. 2. Каждое исследование состоит из наборов изображений. 3. Каждый набор изображений состоит из изображений. 4. Каждое изображение состоит из элементов.
Рис. 8. Иерархия данных в DICOM.
Тарас Захарченко
[email protected] Каждый файл DICOM имеет уникальный серийный номер. Более того, каждая копия файла DICOM имеет уникальный серийный номер. Таким образом можно производить контроль изменений в файлах.
Сети DICOM DICOM работает поверх протокола T/IP. использование протокола T/IP открывает воистину большие возможности. Ведь теперь можно передавать DICOM данные по любой физической среде, которая поддерживается T/IP. Порт службы DICOM обычно 104. Он используется как для приема данных, так и для передачи. Есть возможность прием и передачу данных DICOM разбить на два порта. На рисунке 9 изображено место DICOM в иерархии OSI. Как видите, сервис DICOM находится на прикладном уровне.
Рис. 9. Место DICOM в иерархии OSI. Каждый узел сети DICOM называется Application Entity (AE). Он имеет имя AE Title (AET). Узлом может быть принтер, система хранения изображений (PACS), устройство для захвата изображений (modality), рабочая станция DICOM. Работа всей сети DICOM основана по принципу служб. Таким образом в сети есть узлы, которые используют службы (Service Class или SCU) и те, которые предоставляют эти службы (Service Class Providers или S). Один AE может предоставлять и потреблять несколько служб одновременно. Сама по себе служба ассоциирует один или более объектов DICOM с одной или более командой. Например объект DICOM «изображение видимого диапазона» может быть сохранено и выдано некоторым AE. «Сохранить» и «выдать» есть команды, которые доступны для выполнения данным узлом. Протокол DICOM работает по принципу обмена сообщениями между AE. Сообщения состоят из объектов DICOM (рис. 10). Но перед передачей сообщения необходимо установить ассоциацию между двумя AE. Вот как выглядит выполнение типично
Тарас Захарченко
[email protected] команды «сохранить» в виде пьесы. Акт 1. МРТ: Привет, я МРТ сканер, а ты разговариваешь на DICOM? Архив: Привет, я Архив. Да, я разговариваю на DICOM. МРТ: А ты можешь хранить МРТ снимки ;)? Архив: Конечно МРТ: У меня тут сотенка несжатых накопилась. Хочу их тебе отправить. Могу, конечно, сжать, если хочешь. Архив: Все нормально, кидай несжатыми. МРТ: Окей, отправляю. Архив: Окей, готов принять. Акт 2. МРТ: Вот первый, вот второй, вот третий ... Архив: Первый принял, второй принял, третий принял... Акт 3. МРТ: Все 100 шт. отправил, 0 неудачных, успех. Пока. Архив: Все принято, до связи.
Рис. 10. Сообщение DICOM. Особой службой DICOM есть Modality Worklist. Это список заданий, который должно выполнить устройство захвата изображений и который находится в информационной системе больницы (HIS). Пары команд, которые может выполнить устройство и объектов, с которыми оно может их выполнять называются SOP (Service-object pair). Каждое DICOM устройство должно иметь с собой в документации список таких SOP'ов.