HL7 Hapi получает нестандартный сегмент, имя сегмента присутствует в стандартном сегменте

Я не могу разобрать нестандартный сегмент сообщения, используя terser или happi API. Сегмент "PV2" присутствует в структуре несколько раз, один указан как нестандартный сегмент, который является моим сегментом для разбора сообщения.

После использования message.printStructure() отображается следующая структура (пример).

ADT_A08 (start)
MSH - MSH|^~\&|||||||ADT^A08||P|2.3||||
EVN - Not populated
PID - PID|1||^^^&ISO~^^&~^^^     &ISO~^^^&||^||19230324|F||-1|  ^^ BOXES^CA^81125||||||||
[ PD1 ] - PD1||||^^
[ { NK1 } ] - NK1|1|^|CH||
             NK1|2|^|||
PV1 - PV1|1|I|^MC3706^1|C|||^^^|^^^|^^^|||||1|||^^^|IN||||||||||||||||||||||||||202308211705
[ PV2 ] - Not populated
[ { DB1 } ] - Not populated
PROCEDURE (start)
[{
   PR1 - Not populated
  [ { ROL } ] - Not populated
}]
PROCEDURE (end)
[ { GT1 } ] - GT1|1||^||  ^^^^|(408)-283-1928|||||SLF|828-46-4375||||INFORMATION UNAVAILABLE
[ { PV22 } ] (non-standard) - PV2||ABC|^XYZ
.
.
.
ADT_A08 (end) 

Мне нужно получить поле любого нестандартного сегмента PV2. Я могу получить значения сегмента «PV22», используя краткий или HAPI API (но не по назначению).

terser.get("/.PV22-3-2");  // outputs XYZ

Как мне получить нестандартное значение «PV2», зная только «PV2» в качестве имени сегмента???

terser.get("/.PV2-3-2"); // outputs null

Но я ожидаю результат от использования «PV22». т.е. вывод должен быть "XYZ". Как мне этого добиться?? Заранее спасибо.!!!!!!


person Ankit Shrestha    schedule 27.09.2016    source источник


Ответы (2)


Причина этого в том, что ваш сегмент PV2 находится в неправильном положении в исходном сообщении. Он должен идти сразу после сегмента PV1, и в этом случае он будет нормально проанализирован.

Поскольку он находится в конце вашего сообщения, он анализируется как нестандартный сегмент, и HAPI добавляет «2» в конец, чтобы отличить его от стандартного сегмента PV1.

person James Agnew    schedule 28.09.2016
comment
Да. Групповой API указывает, что к нему может быть добавлен номер, если имя уже используется. Но я хочу знать, является ли мой PV2 стандартным или нестандартным во время выполнения. Я могу получить список нестандартных сегментов, используя AbstractGroup.getNonStandardNames(), который показывает PV22, но я хочу получить значение значения PV2, используя терсер, независимо от стандарта или нестандарта. например использование terser.get(/.PV2-3-2), без указания PV22. - person Ankit Shrestha; 29.09.2016

Джеймс Агнью — Мастер, так что его ответ был довольно категоричным. Я не так много знаю о HL7 или HAPI, как он. Суть может заключаться в следующем: если ваше сообщение нестандартно (например, с PV2, прикрепленным к концу), вы не сможете получить все, что хотите, от HAPI. Это не магия. Похоже, что AbstractGroup.getNonStandardNames() предоставляет вам достаточный доступ для обнаружения PV22 во время выполнения, если вы напишете какой-то собственный код для этой ситуации. Краткость кажется мне удобной структурой, доступной для работы с сообщениями, которые близко соответствуют стандарту; для менее соответствующих сообщений вам придется проделать больше работы.

person user1591330    schedule 04.10.2016