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

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

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

PID|1||||||||||||1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM~0987654321

Field (|): 
PID13 = 1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM~0987654321

Field repetition (~): 
PID13~1 = 1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM
PID13~2 = 0987654321 

Component (^):
PID13.1 = 1234567890
PID13.2 = somedata&moredata
PID13.3 = TESTEMAIL@GMAIL.COM

Sub-component (&):
PID13.2.1 = somedata
PID13.2.2 = moredata
PID13.3.1 = TESTEMAIL@GMAIL.COM
PID13.3.2 = 

2 ответа

Решение

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

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

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

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

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

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

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

Field repetition (~): 
PID13[0] = 1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM
PID13[1] = 0987654321 

Component (^):
PID13[0].1 = 1234567890
PID13[0].2 = somedata&moredata
PID13[0].3 = TESTEMAIL@GMAIL.COM

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 имел значение. Первое повторение было "первичным". Со временем это поле также стало местом посадки адресов электронной почты, номеров пейджеров и т. Д. Так что удачи в попытках разобраться в реальных данных.

Это не правильное использование символа повторения. У вас есть это в имени поля основного компонента, если вы собираетесь его использовать, оно будет использовано в сообщении, показанном в моем примере ниже:

Field repetition (~): 
PID.9 = TEST@WOW.COM~TESTEMAIL@GMAIL.COM
PID.9.1 = TEST@WOW.COM
PID.9.2 = TESTEMAIL@GMAIL.COM 
Другие вопросы по тегам