Протокол обмена с СеленаВижн по HL7

Взаимодействие между ЛИС и СеленаВижн происходит в три этапа:

  1. СеленаВижн запрашивает список доступных заданий.
  2. ЛИС передаёт найденные задания.
  3. После обработки образцов СеленаВижн возвращает результаты исследования.

Каждое полученное HL7-сообщение подтверждается ответом ACK, что гарантирует успешную доставку и обработку данных.

Общая схема обмена

sequenceDiagram participant SV as СеленаВижн participant LIS as ЛИС SV->>LIS: QRY^Q02 Note right of SV: Запрос заданий LIS-->>SV: ACK^Q02 LIS->>SV: DSR^Q03 Note left of LIS: Передача заданий SV-->>LIS: ACK^Q03 SV->>LIS: ORU^R01 Note right of SV: Передача результатов LIS-->>SV: ACK^R01

Последовательность сообщений

Сообщение Отправитель Назначение
QRY^Q02 СеленаВижн Запрос списка доступных заданий
ACK^Q02 ЛИС Подтверждение получения запроса
DSR^Q03 ЛИС Передача заданий на исследование
ACK^Q03 СеленаВижн Подтверждение получения заданий
ORU^R01 СеленаВижн Передача результатов исследования
ACK^R01 ЛИС Подтверждение получения результатов

QRY^Q02 — запрос заданий

Сообщение QRY^Q02 используется СеленаВижн для запроса заданий, доступных для обработки.

После получения запроса ЛИС возвращает подтверждение ACK^Q02, а затем формирует сообщение DSR^Q03 с найденными заданиями.

Пример сообщения

<SB>MSH|^~\&|sciendox|5A|LIS|PC|20210818132223||QRY^Q02|2|P|2.3.1||||0||UTF-8|||<CR>
QRD|20210818132223|R|D|4|||RD|||||<CR>
QRF|5A|20210818000000|20210819000000|||RCT|COR|ALL|<CR>
<EB><CR>

DSR^Q03 — передача заданий из ЛИС в СеленаВижн

После получения запроса (QRY^Q02) ЛИС отправляет в СеленаВижн список заданий для выполнения.

Для каждого образца передаются:

  • штрихкод образца;
  • необходимость выполнения микроскопии;
  • необходимость выполнения анализа тест-полосками;
  • макроскопические характеристики образца: цвет, консистенция, наличие слизи и крови.

Значения макроскопических характеристик передаются в виде кодов из справочников. Состав справочников может отличаться в зависимости от медицинского учреждения. Ниже приведены значения по умолчанию.

DSP15 — цвет образца

Код Значение
8 Коричневый
9 Желтовато-коричневый
10 Тёмно-коричневый
11 Светло-жёлтый
12 Ахоличный (беловато-серый)
13 Серовато-жёлтый
14 Серый
15 Красный
16 Зелёный
200 Чёрный

DSP16 — консистенция образца

Код Значение
200 Твёрдая
201 Мягкая
202 Плотная
203 Мазевидная
204 Пенистая
205 Водянистая

DSP17 — наличие слизи

Код Значение
23 Отрицательный
24 +
25 ++
26 +++
27 ++++

DSP18 — наличие крови

Код Значение
28 Отрицательный
29 +
30 ++
31 +++
32 ++++

Информация о необходимых исследованиях

Поля DSP19–DSP23 используются для передачи информации о том, какие исследования необходимо выполнить для образца.

Поле Назначение Значения
DSP19 Микроскопия 0 — не требуется, 1 — требуется
DSP20 Тест-полоска HP 0 — не требуется, 79 — требуется
DSP21 Тест-полоска FOB 0 — не требуется, 15 — требуется

Поля DSP20–DSP23 соответствуют физическим слотам для тест-полосок в приборе. Поэтому коды исследований могут располагаться в любом из этих полей.

Например, все следующие варианты являются корректными:

[79,15,0,0]
[0,15,79,0]
[0,0,79,15]

Главное, чтобы необходимые коды присутствовали в одном из доступных слотов.

Пример сообщения DSR^Q03

Ниже приведён пример передачи задания с использованием справочных значений, описанных выше.

<SB>MSH|^~\&|Sciendox|2000R|LIS|PC|20220318111857||DSR^Q03|1|P|2.3.1|||P|||ASCII|||<CR>
MSA|AA|1|Message accepted|||0|<CR>
ERR|0|<CR>
QAK|СА|ОК
QRD|20220318111857|R|D|1|||RD||ДРУГОЕ|||T
QRF|2000R|||||RCT|COR|ВСЕ
DSP|1||Иванов Сергей||<CR>
DSP|2||Мужчина||<CR>
DSP|3||11||<CR>
DSP|4||1||<CR>
DSP|5||12||<CR>
DSP|6||13||<CR>
DSP|7||14||<CR>
DSP|8||Кал||<CR>
DSP|9||123456||<CR>
DSP|10||Нормальный||<CR>
DSP|11||Примечания||<CR>
DSP|12||206||<CR>
DSP|13||20220318092723||<CR>
DSP|14||15||<CR>
DSP|15||0||<CR>
DSP|16||0||<CR>
DSP|17||0||<CR>
DSP|18||0||<CR>
DSP|19||0||<CR>
DSP|20||15||<CR>
DSP|21||0||<CR>
DSP|22||0||<CR>
DSP|23||0||<CR>
DSC|1|<CR>
<EB><CR>

ACK^Q03 — подтверждение получения задания

После получения сообщения DSR^Q03 прибор отправляет ответ ACK^Q03, подтверждающий успешное получение и обработку задания.

Пример сообщения:

<SB>MSH|^~\&|Sciendox|2000R|LIS|PC|20220318111858||ACK^Q03|1|P|2.3.1||||||ASCII|||<CR>
MSA|AA|1|Message accepted|||0|<CR>
ERR|0|<CR>
<EB><CR>

ORU^R01 — передача результатов исследований из СеленаВижн в ЛИС

После завершения исследования СеленаВижн отправляет результаты в сообщении ORU^R01.

В сообщении могут использоваться следующие значения переменных.

Макроскопические параметры

Переменная Возможные значения
{macro_color} cherniy, korichneviy, zeleniy, temno-korichneviy, svetlo-korichneviy, beliy, seriy, zheltiy
{macro_hard} plotnaya, myagkaya, zhidkaya, tverdaya, zamazkoobraznaya, kleykaya, ovechiy
{macro_blood} none, +, ++, +++, ++++
{macro_mucus} none, +, ++, +++, ++++

Результаты тест-полосок

Переменная Возможные значения
{macro_test_fob} negative, positive, error
{macro_test_hp} negative, positive, error

Количественные показатели

Переменная Диапазон значений
{diag_XXX_normalized} 0 ... 999
{parasite_XXX_normalized} 0 ... 999
{diag_XXX_total} 0 ... 999
{parasite_XXX_total} 0 ... 999

Интерпретация результатов

Значения интерпретации зависят от настроек конкретной лаборатории и могут отличаться между установками.

Возможные варианты:

  • Не обнаружен
  • Обнаружен
  • Немного
  • Умеренно
  • Много
  • Обильно

Структура сообщения ORU^R01

Сообщение ORU^R01 содержит результаты исследования и состоит из нескольких логических частей:

Сегмент Назначение
MSH Заголовок HL7-сообщения
PID Данные пациента и образца
OBR Информация об исследовании
OBX Результаты исследования

Результаты в сегментах OBX можно условно разделить на несколько групп:

  • макроскопические характеристики образца;
  • результаты тест-полосок;
  • показатели копрограммы;
  • результаты обнаружения паразитов.

Ниже приведён шаблон сообщения с используемыми переменными.

Пример структуры сообщения

MSH|...
PID|...
OBR|...

Макроскопические параметры
OBX|1|...
OBX|2|...
...

Результаты тест-полосок
OBX|5|...
OBX|6|...

Показатели копрограммы
OBX|26|...
OBX|27|...
...

Паразиты
OBX|60|...
OBX|61|...
...

Полный шаблон сообщения:

MSH|^~\&|SciendoxViewer|6000R|LIS|PC|{current_date_string}||ORU^R01|3|P|2.3.1||||0||ASCII\r
...

Пример сообщения

PID|1|Иван Иванов|55344344|22|Male|\r
OBR|1|55344344|5|6000R|N|2025-03-22|2025-03-22||55344344|||diagnosis||sample_type|doctor_name||Remarks\r
OBX|1|ST|3|Color|korichneviy||X\r
OBX|2|ST|4|Hard|tverdaya||X\r
OBX|3|ST|5|Blood|+++||X\r
OBX|4|ST|6|Mucus|none||X>\r
OBX|5|ST|7|Macro test fob|negative||X>\r
OBX|6|ST|8|Macro test hp|||X>\r
OBX|26|ST|201|Pk|3.42|178|Умеренно||U\r
...

В приведённом примере:

  • исследование выполнено для пациента Иван Иванов, 22 года;
  • штрихкод образца — 55344344;
  • дата исследования — 2025-03-22;
  • цвет образца — коричневый;
  • консистенция — твёрдая;
  • кровь обнаружена на +++;
  • слизь отсутствует;
  • тест FOB дал отрицательный результат;
  • тест HP не выполнялся.

Пример интерпретации результата

Строка ниже описывает результат для показателя переваримая клетчатка.

OBX|26|ST|201|Pk|{diag_pk_normalized}|{diag_pk_total}|{diag_pk_text}||U\r

После подстановки фактических значений она может выглядеть следующим образом:

OBX|26|ST|201|Pk|3.42|178|Умеренно||U\r

Значения полей:

Поле Значение Описание
{diag_pk_normalized} 3.42 Среднее количество объектов на одно поле зрения
{diag_pk_total} 178 Общее количество обнаруженных объектов
{diag_pk_text} Умеренно Текстовая интерпретация результата

В данном примере СеленаВижн сообщила об обнаружении 178 объектов. Исследование выполнялось в режиме съёмки на 52 поля зрения, поэтому нормализованное значение составило 3.42 объекта на поле зрения.

Согласно настройкам справочника интерпретаций, используемым в лаборатории, значения в диапазоне от 3 до 5 соответствуют интерпретации «Умеренно».

Особенности прямой HL7-интеграции с прибором Sciendox

В большинстве случаев отдельная интеграция с прибором не требуется, поскольку ПО СеленаВижн самостоятельно взаимодействует со Sciendox и передаёт данные в ЛИС.

Однако при реализации прямого обмена между ЛИС и прибором рекомендуется учитывать следующие особенности.

1. Нестандартная реализация MLLP-обрамления

Прибор передаёт маркеры начала и конца сообщения (<SB> и <EB>) не в виде управляющих символов MLLP, а как обычный текст в Unicode-представлении.

img.png Согласно стандарту MLLP:

To transport an HL7 message using the MLLP protocol, add a vertical tab (VT) character (hexadecimal value 0x0B) at the start of the message. Add a file separator character (FS) (0x1C) and a carriage return (CR) (0x0D) at the end of the message.

В результате некоторые HL7-клиенты могут некорректно обрабатывать сообщения без дополнительной адаптации.

Источник: Ссылка на стандарты

2. Нестандартное использование сегмента DSC

Сегмент DSC в сообщениях DSR^Q03 используется не по стандартной схеме.

Вместо ссылки на следующий фрагмент сообщения поле содержит номер текущего образца:

1-й образец -> DSC|1|
2-й образец -> DSC|2|
3-й образец -> DSC||

При обработке сообщений не следует интерпретировать значение DSC как ссылку на следующий пакет данных.

3. Зависимость данных от выбранного языка интерфейса

При сохранении информации прибор использует разные базы данных в зависимости от языка интерфейса, выбранного при запуске.

Например:

  • при запуске на английском языке данные сохраняются в базу sciendox_en;
  • при запуске на русском языке используется другая база данных.

Поэтому образцы, созданные в одной языковой конфигурации, могут быть недоступны после перезапуска прибора с другим языком интерфейса.

4. Требования к формату даты

На ПК анализатора должен использоваться формат даты:

YYYY-MM-DD

Использование локального формата:

DD.MM.YYYY

может приводить к ошибкам в работе ПО анализатора, включая:

  • невозможность создания нового случая;
  • ошибки поиска существующих случаев;
  • ошибки на уровне запросов к MySQL.

5. Использование двух сетевых соединений

При подключении к ЛИС прибор открывает два сокета вместо одного.

Некоторые ЛИС ожидают использование единственного соединения и могут работать некорректно при наличии дополнительного сокета.

Перед внедрением рекомендуется проверить совместимость сетевого взаимодействия со стороны ЛИС.

Дополнительная документация