Имеет ли функция разделения javascript особое значение в веселье?

Я поддерживаю унаследованную систему веселья. Мы получаем несколько входящих сообщений HL7 с повторяющимся сегментом ZP1.36. Насколько я могу судить, веселье разделяет эти повторяющиеся сегменты на массив повторяющихся сегментов с помощью функции разделения.

var repeat36 = msg['ZP1']['ZP1.36'].toString().split("</ZP1.36>"); //I think returns an array of ZP1.36 segments

Но в необработанных данных я не вижу строки ZP1.36...

Я привык использовать функции разделения в VB/Java/C#, которые делят строки на токены вокруг определенного символа, например:

var myTokens = "hello^world".toString().Split("^"); //returns a 2 item array {"hello", "world"}

Функция разделения Мирта, похоже, не работает таким образом. Кажется, он анализирует сообщения на основе предполагаемой структуры сообщения HL7.

Это то, что происходит? Я что-то упускаю? Каковы правила разделения функции веселья?

Размещено в сообществе веселья http://www.mirthcorp.com/community/forums/showthread.php?p=26203#post26203


person bernie2436    schedule 03.07.2012    source источник


Ответы (2)


Я знаю, что вы уже нашли и приняли достаточный ответ на свой вопрос (репостированный с форумов Мирта), но я подумал, что было бы полезно дать немного больше информации в отдельном ответе.

По сути, Mirth использует несколько ранее существовавших технологий для работы с данными HL7.

  1. HAPI (произносится как "Happy"): это библиотека кода Java для переинтерпретации версии 2, разделенной вертикальной чертой. .x HL7 как XML. Формат V2.XML сам по себе также является официальной спецификацией HL7 (не путать с V3 HL7, которая изначально является XML). Название продукта «Mirth», очевидно, было выбрано как синоним слова «счастливый».
  2. E4X: это стандарт JavaScript для работы с XML. Ему не удалось добиться значительных успехов в качестве стандартной веб-технологии, однако Mirth использует его из-за его доступности в движок Rhino JavaScript.

Из примеров, которые Дэнс предоставил вам на форумах Mirth:

Этот фрагмент находится в стандартном формате XML для HL7 v.2x:

<ZP1.36>
    <ZP1.36.1>Hello</ZP1.36.1>
    <ZP1.36.2>World</ZP1.36.2>
<ZP1.36>

Этот код JavaScript использует нотацию E4X для анализа и доступа к данным HL7, которые был переинтерпретирован в типы данных E4X XML и XMLList:

var zp1361 = msg['ZP1']['ZP1.36']['ZP1.36.1'].toString();
var zp1362 = msg['ZP1']['ZP1.36']['ZP1.36.2'].toString();
  • msg — объект XML E4X, содержащий данные HL7.
  • msg['ZP1'] создает объект E4X XMLList, содержащий список сегментов ZP1.
person csj    schedule 18.10.2012
comment
Спасибо. Это лучше объясняет. - person bernie2436; 18.10.2012
comment
@csj Вы действительно уверены, что он использует hapi, а не mule для работы с данными HL7? Я вижу много мулов-исключений в веселье... - person Sid; 28.08.2013
comment
Mule используется в качестве механизма маршрутизации... по крайней мере, так было. Последняя версия Mirth имеет свою собственную версию домашнего пива под названием Donkey (это может быть вилкой мула, насколько я знаю). Эти ребята из Mirth Corp любят свою игру слов. - person csj; 30.08.2013
comment
@Sid Вот кое-что из архивов Mirth Corp (когда они еще назывались WebReach). В статье упоминается ряд используемых технологий, включая Mule и HAPI. Я почти уверен, что с тех пор список расширился. mirthcorp.com/news/webreach-unveils-mirth - person csj; 30.08.2013

Дэнс, сотрудник Mirth на форумах Mirth, объясняет что функция разделения работает над xml-переводом входящего сообщения.

Итак, вы работаете с xml, а ZP1.36 уже разделен:

<ZP1.36>
   <ZP1.36.1>Hello</ZP1.36.1>
   <ZP1.36.2>World</ZP1.36.2>
<ZP1.36>

Если вы хотите получить различные подэлементы, вы можете сделать что-то вроде этого:

var zp1361 = msg['ZP1']['ZP1.36']['ZP1.36.1'].toString();
var zp1362 = msg['ZP1']['ZP1.36']['ZP1.36.2'].toString();
person bernie2436    schedule 06.07.2012