Невозможно проанализировать несколько сегментов IN1 в HL7 с помощью HAPI TERSER

Я получаю сообщения HL7 версии 2.5.1.

MSH|..
PID|..
PV1|..
ORC|..
IN1|1|...
IN1|2|....

Таким образом, в приведенном выше примере IN1 повторяется, однако, когда я пытаюсь проанализировать второй сегмент IN1 с помощью TERSER, он выдает исключение "Не удается создать повторение №1 в структуре IN1 - эта структура не повторяется".

This is what i have tried so far

    string insurance = terser.Get("/.INSURANCE/.IN1(0)-1"); // Works fine
    string insurance = terser.Get("/.INSURANCE/.IN1(1)-1"); // Throws exception
string insurance = terser.Get("/.INSURANCE(0)/.IN1(0)-1"); // Works fine
    string insurance = terser.Get("/.INSURANCE(1)/.IN1(0)-1"); // Throws exception

2 ответа

Я только начал изучать HAPI. Я заметил, что в вашем примере вы не указали, как вы анализируете сообщение. Скорее всего, это был синтаксический анализ общего сообщения с использованием терсера. Если это так, я думаю, что это должно выглядеть примерно так

string insurance = terser.Get("/.INSURANCE/.IN12-1"); 

Я считаю, что Generic Message не имеет групп, и для доступа к этому сегменту, вероятно, нужно использовать IN12 вместо IN1(1)

Вы близки, но вы используете повторяющуюся группу на IN1, которая не является повторяющимся сегментом. Помните, что группа INSURANCE повторяет сегменты внутри:

Try:

/.INSURANCE(0)/.IN1-1"

/.INSURANCE(1)/.IN1-1"




"/.INSURANCE(1)/.IN1(0)-1" 

works because there's only one IN1 segment in the group (rep 0 defaults to the 1st segment in the group):

Из Api Terser прочитайте раздел о группах:

...

group_spec: ["."] group_name_pattern

Здесь. указывает, что группу следует искать (используя SegmentFinder), начиная с текущего местоположения в сообщении. Подстановочные знаки " " и "?" представляют любое количество произвольных символов и один произвольный символ соответственно. Например, "М " и "?S?" соответствовать MSH. Первая группа с именем, совпадающим с заданным group_name_pattern, будет сопоставлена.

Сегмент_спец аналогичен групповому.

В качестве другого примера, следующий подкомпонент в сообщении SIU_S12:

msg.getSIU_S12_RGSAISNTEAIGNTEAILNTEAIPNTE (1).getSIU_S12_AIGNTE () getAIG () getResourceGroup(1).getIdentifier()..;

...

на него ссылаются все следующие location_spec: / SIU_S12_RGSAISNTEAIGNTEAILNTEAIPNTE (1) / SIU_S12_AIGNTE / AIG-5(1) -1 / AIG (1) / SIU_S12_AIGNTE / AIG-5(1) -1 / AIG (1) /. 5(1)

Функция поиска повторяет только повтор 0 в каждой группе. Таким образом, если бы rep 0 первой группы в этом примере был желательным вместо rep 1, следующий синтаксис также работал бы (так как в SUI_S12 есть только одна позиция сегмента AIG):

/.AIG-5(1)

Другие вопросы по тегам