Символы кодировки/разделителя HL7

Что касается данных с разделителями каналов HL7, как именно работают символы кодирования (|^~\&)?

Правилен ли следующий пример полей, повторов полей, компонентов и их подкомпонентов при анализе необработанных данных HL7?

PID|1||||||||||||1234567890^somedata&moredata^[email protected]~0987654321

Field (|): 
PID13 = 1234567890^somedata&moredata^[email protected]~0987654321

Field repetition (~): 
PID13~1 = 1234567890^somedata&moredata^[email protected]
PID13~2 = 0987654321 

Component (^):
PID13.1 = 1234567890
PID13.2 = somedata&moredata
PID13.3 = [email protected]

Sub-component (&):
PID13.2.1 = somedata
PID13.2.2 = moredata
PID13.3.1 = [email protected]
PID13.3.2 = 

person Reynel    schedule 19.03.2018    source источник
comment
Согласимся ли мы с чем? Что такое консенсус? Этот вопрос выглядит как опрос мнений.   -  person    schedule 20.03.2018
comment
HL7 считается стандартом в сфере здравоохранения, но не все следуют ему до конца. Мой вопрос адресован тем, кто имеет опыт работы со стандартом HL7, где известно, что форматы и данные обрабатываются по-разному в разных системах. Это не просто вопрос мнения, я просто спрашиваю, с чем сталкивались другие в отношении этих разделителей. Что вроде бы стандартно для таких персонажей.   -  person Reynel    schedule 20.03.2018
comment
Если все ответы одинаково верны, то этот вопрос не относится к теме переполнения стека. справочный центр   -  person    schedule 20.03.2018
comment
Хотя это не обязательно так. Некоторые ответы перевешивают другие в зависимости от варианта использования и частоты использования. 90% отрасли могут следовать одному пути, а 10% — нет, и эта разница, если она существует, значительна. Я считаю, что существует только один стандартный протокол для разделителей полей, но я слышал встречные заявления и заинтересован в том, чтобы узнать, что думает сообщество.   -  person Reynel    schedule 20.03.2018
comment
@Amy и другие, которые могли проголосовать за этот вопрос, пожалуйста, передумайте. HL7 — очень гибкий формат (к сожалению). Этот вопрос закономерен. На самом деле всем, кто изучал HL7, приходилось разбираться в значениях |^~\&. Технически каждое сообщение может выбирать разные значения для каждого из них, но на практике именно они используются всеми сообщениями HL7 в дикой природе. Я постараюсь дать ответ.   -  person daveloyall    schedule 30.05.2018
comment
Ответа @Nick Hatt достаточно, хотя я немного отредактировал его, чтобы он соответствовал общему синтаксису для адресации отдельных полей HL7.   -  person daveloyall    schedule 30.05.2018
comment
@daveloyall В свете того, что вопрос был отредактирован, поэтому он не является опросом мнений, я удалил свой отрицательный голос. Мой отрицательный голос никогда не был о том, что вопрос не является законным.   -  person    schedule 31.05.2018


Ответы (1)


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

Однако есть один правильный способ проанализировать рассматриваемый сегмент/поле.

Вот ссылка на спецификации, на которые я ссылаюсь здесь

Из раздела 2.5.3 стандарта HL7v2.7:

Каждому полю назначается тип данных, определяющий область значений поля — возможные значения, которые оно может принимать.

Если вы откроете раздел 3.4.2.13 (PID-13), вы увидите разбивку каждого компонента и подкомпонента. Технически значение подкомпонентов и компонентов может различаться в зависимости от поля, но в основном они различаются только типом данных.

В вашем примере вы не рассматриваете повторения как отдельные экземпляры типов данных XTN. Я бы переписал синтаксис массива так:

Field repetition (~): 
PID13[0] = 1234567890^somedata&moredata^[email protected]
PID13[1] = 0987654321 

Component (^):
PID13[0].1 = 1234567890
PID13[0].2 = somedata&moredata
PID13[0].3 = [email protected]

Sub-component (&):
PID13[0].2.1 = somedata
PID13[0].2.2 = moredata

Также может быть полезен псевдокод в том же разделе спецификации 2.6.1.

foreach occurrence in ( occurrences_of( field ) ) {
  construct_occurrence( occurrence );
  if not last ( populated occurrence ) insert repetition_separator;
    /* e.g., ~ */
}

Важно помнить, что эти разные подкомпоненты имеют разное значение, поскольку PID-13 относится к типу XTN.

PID-13 является проблематичным примером, потому что исторически порядок PID-13 имел значение. Первое повторение было «первичным». Со временем это поле также стало посадочным местом для адресов электронной почты, номеров пейджеров и т. д. Так что удачи в попытках разобраться в реальных данных.

person Nick Hatt    schedule 21.03.2018
comment
Это именно то, что мне было нужно, спасибо! Левая структура, которую я назначаю в моем примере, предназначена просто для целей идентификации, например, для идентификации каждого поля/компонента/подкомпонентов и повторителей поля. Однако ваш пример намного понятнее :) - person Reynel; 22.03.2018