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

  1. СеленаВижн отправляет сообщение "дайте новые задания" (ЛИС отвечает ACK)
  2. ЛИС отправляет задания (Прибор отвечает ACK)
  3. СеленаВижн отправляет результаты (ЛИС отвечает ACK)
sequenceDiagram СеленаВижн->>ЛИС: QRY^Q02 (запрос заданий) ЛИС-->>СеленаВижн: ACK^Q02 ЛИС->>СеленаВижн: DSR^Q03 (передача заданий) СеленаВижн-->>ЛИС: ACK^Q03 СеленаВижн->>ЛИС: ORU^R01 (передача результатов) ЛИС-->>СеленаВижн: ACK^R01

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

Пример:

<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 (передача заданий ЛИС -> СеленаВижн)

В заданиях важно передать:

  • баркод образца
  • признак необходимости выполнения микроскопии
  • признак необходимости выполнения тест-полосок
  • макропараметры образца (цвет, консистенция, наличие слизи, крови)

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

DSP15 - код цвета

8: "коричневый"
9: "желтовато-коричневый"
10: "темно-коричневый"
11: "светло-желтый"
12: "ахоличный (беловато-серый)"
13: "серовато-желтый"
14: "серый"
15: "красный"
16: "зеленый"
206: "черный"

DSP16 - код консистенции

200: "твердая"
201: "мягкая"
202: "плотная"
203: "мазевидная"
204: "пенистая"
205: "водянистая"

DSP17 - код слизи

23: "Отрицательный"
24: "+"
25: "++"
26: "+++"
27: "++++"

DSP18 - код крови

28: "Отрицательный"
29: "+"
30: "++"
31: "+++"
32: "++++"

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

  • DSP19 - нужно ли делать микроскопию (0 - нет, 1 - да)
  • DSP20 - нужно ли делать тест-полоску HP (0 - нет, 79 - да)
  • DSP21 - нужно ли делать тест-полоску FOB (0 - нет, 15 - да) (DSP20-DSP23 это физические слоты для полосок, поэтому комбинация может быть любой: [79,15,0,0], [0,15,79,0], ...)

Пример запроса задания с учетом справочных значений выше:

<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

<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 (отправка результатов исследований СеленаВижн -> ЛИС)

Возможные подстановки переменных в {скобках}:

  • {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} / {parasite_XXX_normalized}: 0 .. 999
  • {diag_XXX_total} / {parasite_XXX_total}: 0 .. 9999
  • {diag_XXX_total} / {parasite_XXX_total}: "Не обнаружен" / "Обнаружен" / "Немного" / "Умеренно" / "Много" / (зависит от настройки интерпретации в конкретной лаборатории)

Схема HL7-сообщения:

MSH|^~\&|SciendoxViewer|6000R|LIS|PC|{current_date_string}||ORU^R01|3|P|2.3.1||||0||ASCII\r
PID|1|{admin_name}|{admin_barcode}|{admin_age}|{admin_gender}|\r  # Административные данные пациента: имя, баркод пробы, возраст, пол
OBR|1|{admin_barcode}|5|6000R|N|{current_date_string}|{current_date_string}||{admin_barcode}|||diagnosis||sample_type|doctor_name||Remarks\r
OBX|1|ST|3|Color|{macro_color}||X\r  # Цвет (макро-параметр внешнего осмотра)
OBX|2|ST|4|Hard|{macro_hard}||X\r  # Консистенция (макро-параметр внешнего осмотра)
OBX|3|ST|5|Blood|{macro_blood}||X\r  # Кровь (макро-параметр внешнего осмотра)
OBX|4|ST|6|Mucus|{macro_mucus}||X>\r  # Слизь (макро-параметр внешнего осмотра)
OBX|5|ST|7|Macro test fob|{macro_test_fob}||X>\r  # Результат тест-полосок на скрытую кровь (FOB)
OBX|6|ST|8|Macro test hp|{macro_test_hp}||X>\r  # Результат тест-полосок на helicobacter (HP)
OBX|26|ST|201|Pk|{diag_pk_normalized}|{diag_pk_total}|{diag_pk_text}||U\r  # Переваримая клетчатка
OBX|27|ST|202|Npk|{diag_npk_normalized}|{diag_npk_total}|{diag_npk_text}||U\r  # Непереваримая клетчатка
OBX|28|ST|203|Mvi|{diag_mvi_normalized}|{diag_mvi_total}|{diag_mvi_text}||U\r  # Мышечные волокна с исчерченностью
OBX|29|ST|204|Mvb|{diag_mvb_normalized}|{diag_mvb_total}|{diag_mvb_text}||U\r  # Мышечные волокна без исчерченности
OBX|30|ST|205|Leiko|{diag_leiko_normalized}|{diag_leiko_total}|{diag_leiko_text}||U\r  # Лейкоциты
OBX|31|ST|206|Eritro|{diag_eritro_normalized}|{diag_eritro_total}|{diag_eritro_text}||U\r  # Эритроциты
OBX|32|ST|207|Oksal|{diag_oksalat_normalized}|{diag_oksalat_total}|{diag_oksalat_text}||U\r  # Кристаллы оксалата кальция
OBX|33|ST|208|Zhir Kapli|{diag_zhir_k_normalized}|{diag_zhir_k_total}|{diag_zhir_k_text}||U\r  # Жир: капли
OBX|34|ST|209|Zhir Glibki|{diag_zhir_g_normalized}|{diag_zhir_g_total}|{diag_zhir_g_text}||U\r  # Жир: глыбки
OBX|35|ST|210|Zhir Igli|{diag_zhir_i_normalized}|{diag_zhir_i_total}|{diag_zhir_i_text}||U\r  # Жир: иглы
OBX|36|ST|211|Drozzhi S|{diag_drozzhi_s_normalized}|{diag_drozzhi_s_total}|{diag_drozzhi_s_text}||U\r  # Дрожжевые клетки (споры)
OBX|37|ST|212|Drozzhi M|{diag_drozzhi_m_normalized}|{diag_drozzhi_m_total}|{diag_drozzhi_m_text}||U\r  # Дрожжевые клетки (мицелий)
OBX|38|ST|213|Tripel|{diag_tripel_normalized}|{diag_tripel_total}|{diag_tripel_text}||U\r  # Кристаллы трипельфосфатов
OBX|39|ST|214|Krahmal vne|{diag_krahmal_vne_normalized}|{diag_krahmal_vne_total}|{diag_krahmal_vne_text}||U\r  # Крахмал внеклеточный
OBX|40|ST|215|Krist Sharko|{diag_sharko_normalized}|{diag_sharko_total}|{diag_sharko_text}||U\r  # Кристаллы Шарко – Лейдена
OBX|41|ST|216|Detrit|{diag_detrit_normalized}|{diag_detrit_total}|{diag_detrit_text}||U\r  # Детрит
OBX|42|ST|217|Pilca|{diag_pilca_normalized}|{diag_pilca_total}|{diag_pilca_text}||U\r  # Цветочная пыльца
OBX|43|ST|218|Krahmal vnu|{diag_krahmal_vnu_normalized}|{diag_krahmal_vnu_total}|{diag_krahmal_vnu_text}||U\r  # Крахмал внутриклеточный
OBX|44|ST|219|Yodofil flora norm|{diag_yodofil_flora_norm_normalized}|{diag_yodofil_flora_norm_total}|{diag_yodofil_flora_norm_text}||U\r  # Йодофильная флора нормальная
OBX|45|ST|220|Yodofil flora pat|{diag_yodofil_flora_pat_normalized}|{diag_yodofil_flora_pat_total}|{diag_yodofil_flora_pat_text}||U\r  # Йодофильная флора патологическая
OBX|46|ST|221|Soed|{diag_soed_normalized}|{diag_soed_total}|{diag_soed_text}||U\r  # Соединительная ткань
OBX|47|ST|222|Epitel|{diag_epitel_normalized}|{diag_epitel_total}|{diag_epitel_text}||U\r  # Клетки цилиндрического эпителия
OBX|48|ST|223|Hematoidin Crystals|{diag_hematoidin_normalized}|{diag_hematoidin_total}|{diag_hematoidin_text}||U\r  # Гематоидин
OBX|49|ST|224|Salt crystals|{diag_salt_normalized}|{diag_salt_total}|{diag_salt_text}||U\r  # Кристаллы солей
OBX|50|ST|225|Sliz|{diag_sliz_normalized}|{diag_sliz_total}|{diag_sliz_text}||U\r  # Слизь
OBX|60|ST|300|Острица (яйцо)|{parasite_enterobius_vermicularis_e_normalized}|{parasite_enterobius_vermicularis_e_total}|{parasite_enterobius_vermicularis_e_text}||U\r  # Далее идут паразиты, названия см в пятом сегменте строк 
OBX|61|ST|301|Ascaris lumbricoides (НО яйцо)|{parasite_ascaris_lumbricoides_enf_normalized}|{parasite_ascaris_lumbricoides_enf_total}|{parasite_ascaris_lumbricoides_enf_text}||U\r
OBX|62|ST|302|Ascaris lumbricoides (О яйцо)|{parasite_ascaris_lumbricoides_ef_normalized}|{parasite_ascaris_lumbricoides_ef_total}|{parasite_ascaris_lumbricoides_ef_text}||U\r
OBX|63|ST|303|Власоглав (яйцо)|{parasite_trichocephalus_trichiurus_e_normalized}|{parasite_trichocephalus_trichiurus_e_total}|{parasite_trichocephalus_trichiurus_e_text}||U\r
OBX|64|ST|304|Ancylostomidae g. sp. (яйцо)|{parasite_ancylostomidae_e_normalized}|{parasite_ancylostomidae_e_total}|{parasite_ancylostomidae_e_text}||U\r
OBX|65|ST|305|Кишечная угрица (личинка)|{parasite_strongyloides_stercoralis_e_normalized}|{parasite_strongyloides_stercoralis_e_total}|{parasite_strongyloides_stercoralis_e_text}||U\r
OBX|66|ST|306|Карликовый цепень (яйцо)|{parasite_hymenolepis_nana_e_normalized}|{parasite_hymenolepis_nana_e_total}|{parasite_hymenolepis_nana_e_text}||U\r
OBX|67|ST|307|Крысиный цепень (яйцо)|{parasite_hymenolepis_diminuta_e_normalized}|{parasite_hymenolepis_diminuta_e_total}|{parasite_hymenolepis_diminuta_e_text}||U\r
OBX|68|ST|308|Сибирская двуустка (яйцо)|{parasite_opisthorchis_felineus_e_normalized}|{parasite_opisthorchis_felineus_e_total}|{parasite_opisthorchis_felineus_e_text}||U\r
OBX|69|ST|309|Китайская двуустка (яйцо)|{parasite_clonorchis_sinensis_e_normalized}|{parasite_clonorchis_sinensis_e_total}|{parasite_clonorchis_sinensis_e_text}||U\r
OBX|70|ST|310|Легочная двуустка (яйцо)|{parasite_paragonimus_westermani_e_normalized}|{parasite_paragonimus_westermani_e_total}|{parasite_paragonimus_westermani_e_text}||U\r
OBX|71|ST|311|Печеночный сосальщик (яйцо)|{parasite_fasciola_hepatica_e_normalized}|{parasite_fasciola_hepatica_e_total}|{parasite_fasciola_hepatica_e_text}||U\r
OBX|72|ST|312|Другие простейшие|{parasite_other_normalized}|{parasite_other_total}|{parasite_other_text}||U\r
OBX|73|ST|313|Лямблия (циста)|{parasite_lamblia_intestinalis_c_normalized}|{parasite_lamblia_intestinalis_c_total}|{parasite_lamblia_intestinalis_c_text}||U\r
OBX|74|ST|314|Балантидиаз (циста)|{parasite_balantidium_coli_c_normalized}|{parasite_balantidium_coli_c_total}|{parasite_balantidium_coli_c_text}||U\r
OBX|75|ST|315|Бластоцисты|{parasite_blastocisti_normalized}|{parasite_blastocisti_total}|{parasite_blastocisti_text}||U\r
OBX|76|ST|316|Ооцисты|{parasite_oocisti_normalized}|{parasite_oocisti_total}|{parasite_oocisti_text}||U\r
OBX|77|ST|317|Цисты Амеб|{parasite_cisti_ameb_normalized}|{parasite_cisti_ameb_total}|{parasite_cisti_ameb_text}||U\r
OBX|78|ST|318|Другие гельминты|{parasite_gelmint_other_normalized}|{parasite_gelmint_other_total}|{parasite_gelmint_other_text}||U\r
OBX|79|ST|319|Йодамеба Бючли|{parasite_iodamoeba_normalized}|{parasite_iodamoeba_total}|{parasite_iodamoeba_text}||U\r
OBX|80|ST|320|Карликовая амёба|{parasite_dwarf_amoeba_normalized}|{parasite_dwarf_amoeba_total}|{parasite_dwarf_amoeba_text}||U\r
OBX|81|ST|321|Кишечная амёба|{parasite_intestinal_amoeba_normalized}|{parasite_intestinal_amoeba_total}|{parasite_intestinal_amoeba_text}||U\r
OBX|82|ST|322|Chilomastix mensill|{parasite_chilomastix_mensill_normalized}|{parasite_chilomastix_mensill_total}|{parasite_chilomastix_mensill_text}||U\r
OBX|83|ST|323|Онкосферы Тениид (Taeniidae)|{parasite_taeniidae_normalized}|{parasite_taeniidae_total}|{parasite_taeniidae_text}||U\r
OBX|84|ST|324|Широкий лентец (Diphyllobothriidae)|{parasite_diphyllobothriidae_normalized}|{parasite_diphyllobothriidae_total}|{parasite_diphyllobothriidae_text}||U\r
<EB><CR>

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

PID|1|Иван Иванов|55344344|22|Male|\r  # Пациент Иван Иванов, 22 года, М, баркод образца 55344344
OBR|1|55344344|5|6000R|N|2025-03-22|2025-03-22||55344344|||diagnosis||sample_type|doctor_name||Remarks\r  # дата исследования 2025-03-22
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  # Результат тест-полосок на скрытую кровь (FOB) - отрицательный
OBX|6|ST|8|Macro test hp|||X>\r  # Результат тест-полосок на helicobacter (HP) - не делался
OBX|26|ST|201|Pk|3.42|178|Умеренно||U\r  # Переваримой клетчатки - умеренное количество, 178 шт. всего, 3.42 в среднем
...  # Остальные строчки, содержащие объекты - как OBX|26

Таким образом строчка\ 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\ т.к. всего найдено 178 объектов, и т.к. включен режим съемки на 52 поля зрения, среднее значение на одно поле зрения - 3.42, а по текущей настройке справочника интерпретаций значений в лаборатории нормализованные значения с 3 до 5 - это "Умеренно"

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

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

  1. Шапки HL7 <SB> и <EB> отдаются прибором не в стандартном MLLP виде (ASCII 0x0B), а в виде плейнтекста в двухбайтовом Unicode img.png Ссылка на стандарты

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) (hexadecimal value 0x1c) and a carriage return (CR) (hexadecimal value 0x0d) at the end of the message. 2. DSC|1| работает не по стандарту, т.к. ссылается не на следующий фрагмент, а на текущий в DSR^Q03:

For example, LIS sends 3 sample messages in batches :\ 1st sample _ DSC|1|\ 2nd sample _ DSC|2|\ 3rd sample _ DSC|| 3. Сохранение в базу прибора зависит от выбранного языка на консоли прибора при запуске: если выбран английский и система получает HL7-сообщение о новом образце, он останется только в базе sciendox_en. Если прибор перезапустить на русском языке, образца не будет. 4. Формат даты на ПК анализатора должен быть в UTC (YYYY-MM-DD), изменение на RU-формат (DD.MM.YYYY) приводит к ошибкам в работе ПО анализатора (на уровне MySQL) при попытке завести новый случай, либо при попытке поиска случаев. 5. При подключении к порту ЛИС прибор создает два сокета, а не одно. Для некоторых ЛИС важно, чтобы соединение было одно.

Официальная HL7 инструкция от Sciendox