Кодировка 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