Сообщение TCP HL7 имеет .(точка) в качестве конца сегмента

Я получаю сообщение hl7 через tcp, в котором я получаю сообщение с .(точками) в конце каждого сегмента, поэтому мой механизм приемника hl7 не может обработать сообщение и его разрыв, образец сообщения через tcp

%0D%0A00000000 | 00 00 02 fc 10 5e 00 00 00 00 00 00 02 e2 0b 4d .....^.........M
%0D%0A00000016 | 53 48 7c 5e 7e 5c 26 7c 41 54 48 45 4e 41 4e 45 SH|^~\&|AAEEAAEE
%0D%0A00000032 | 54 7c 36 31 30 5e 56 41 20 2d 20 4d 69 64 20 41 T|610^VA - Mode B
%0D%0A00000048 | 74 6c 61 6e 74 69 63 20 57 6f 6d 65 6e 27 73 20 ody test 
%0D%0A00000064 | 43 61 72 65 7c 56 49 5a 54 45 4b 3a 3a 36 31 30 Care|VIoTooK::610
%0D%0A00000080 | 7c 7c 32 30 31 34 30 35 33 30 31 35 30 33 7c 7c ||201405301503||
%0D%0A00000096 | 53 49 55 5e 53 31 35 7c 31 38 35 32 31 37 34 32 SIU^S15|18521742
%0D%0A00000112 | 7c 54 7c 32 2e 32 7c 7c 7c 7c 7c 7c 7c 7c 0d 53 |T|2.2||||||||.S
%0D%0A00000128 | 43 48 7c 36 34 30 39 36 34 33 7c 36 34 30 39 36 CH|6409643|64096
%0D%0A00000144 | 34 33 7c 7c 7c 7c 31 5e 50 54 20 43 41 4e 43 45 43||||1^PT CANCE
%0D%0A00000160 | 4c 4c 45 44 7c 54 65 73 74 69 6e 67 3b 54 45 53 LLED|Testing;TES
%0D%0A00000176 | 54 49 4e 47 7c 4d 41 32 30 5e 4d 41 4d 4d 4f 47 TING|MA20^MAMMOG
%0D%0A00000192 | 52 41 4d 7c 32 30 7c 6d 69 6e 75 74 65 73 7c 5e RAM|20|minutes|^
%0D%0A00000208 | 5e 5e 32 30 31 34 30 36 30 32 30 38 32 30 7c 7c ^^201406020820||
%0D%0A00000224 | 7c 7c 7c 6d 68 65 61 6e 67 7c 7c 7c 7c 7c 7c 7c |||mheang|||||||
%0D%0A00000240 | 7c 7c 0d 50 49 44 7c 7c 34 37 35 30 31 33 7c 34 ||.PID||475013|4
%0D%0A00000256 | 37 35 30 31 33 7c 7c 54 45 53 54 45 52 5e 41 54 75013||TESTER^AT
%0D%0A00000272 | 48 45 4e 41 5e 5e 7c 7c 31 39 39 34 30 35 33 30 HENA^^||19940530
%0D%0A00000288 | 7c 46 7c 7c 39 30 30 5e 57 68 69 74 65 7c 33 31 |F||900^White|31
%0D%0A00000304 | 31 20 41 52 53 45 4e 41 4c 20 53 54 52 45 45 54 1 ARSENAL STREET
%0D%0A00000320 | 5e 5e 57 41 54 45 52 54 4f 57 4e 5e 4d 41 5e 30 ^^WATERTOWN^MA^0
%0D%0A00000336 | 32 34 37 32 5e 55 4e 49 54 45 44 20 53 54 41 54 2472^UNITED STAT
%0D%0A00000352 | 45 53 7c 7c 28 36 36 36 29 36 36 36 2d 36 36 36 ES||(666)666-666
%0D%0A00000368 | 36 5e 28 37 37 37 29 37 37 37 2d 37 37 37 37 7c 6^(777)777-7777|
%0D%0A00000384 | 28 39 39 39 29 39 39 39 2d 39 39 39 39 7c 31 32 (999)999-9999|12
%0D%0A00000400 | 34 5e 45 6e 67 6c 69 73 68 7c 53 7c 7c 7c 31 32 4^English|S|||12
%0D%0A00000416 | 33 34 35 36 37 38 39 7c 7c 7c 34 33 5e 4e 6f 74 3456789|||43^Not
%0D%0A00000432 | 20 48 69 73 70 61 6e 69 63 20 6f 72 20 4c 61 74 Hispanic or Lat
%0D%0A00000448 | 69 6e 6f 7c 7c 7c 7c 7c 7c 7c 7c 0d 50 56 31 7c ino||||||||.PV1|
%0D%0A00000464 | 7c 7c 31 37 5e 4d 41 49 43 2d 43 68 65 73 61 70 ||17^MAIC-Chesap
%0D%0A00000480 | 65 61 6b 65 5e 5e 4d 41 49 43 2d 43 68 65 73 61 eake^^MAIC-Chesa
%0D%0A00000496 | 70 65 61 6b 65 7c 7c 7c 7c 34 35 5e 4d 41 4d 4d peake||||45^MAMM
%0D%0A00000512 | 4f 47 52 41 4d 7c 33 37 30 32 5e 53 4d 49 54 48 OGRAM|3702^SMITH
%0D%0A00000528 | 2c 20 43 4c 41 59 54 4f 4e 7c 7c 7c 7c 7c 7c 7c , CLAYTON|||||||
%0D%0A00000544 | 7c 7c 34 35 5e 4d 41 4d 4d 4f 47 52 41 4d 7c 7c ||45^MAMMOGRAM||
%0D%0A00000560 | 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c ||||||||||||||||
%0D%0A00000576 | 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c ||||||||||||||||
%0D%0A00000592 | 7c 0d 44 47 31 7c 7c 49 43 44 39 7c 7c 6e 6f 20 |.DG1||ICD9||no 
%0D%0A00000608 | 63 75 72 72 65 6e 74 20 64 69 61 67 6e 6f 73 69 current diagnosi
%0D%0A00000624 | 73 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c 7c s|||||||||||||||
%0D%0A00000640 | 0d 52 47 53 7c 7c 7c 0d 41 49 47 7c 7c 7c 4d 41 .RGS|||.AIG|||MA
%0D%0A00000656 | 4d 4d 4f 47 52 41 4d 7c 7c 7c 7c 7c 32 30 31 34 MMOGRAM|||||2014
%0D%0A00000672 | 30 36 30 32 30 38 32 30 7c 7c 7c 32 30 7c 6d 69 06020820|||20|mi
%0D%0A00000688 | 6e 75 74 65 73 7c 7c 0d 41 49 4c 7c 7c 7c 31 37 nutes||.AIL|||17
%0D%0A00000704 | 5e 4d 41 49 43 2d 43 68 65 73 61 70 65 61 6b 65 ^MAIC-Chesapeake
%0D%0A00000720 | 7c 7c 7c 32 30 31 34 30 36 30 32 30 38 32 30 7c |||201406020820|
%0D%0A00000736 | 7c 7c 32 30 7c 6d 69 6e 75 74 65 73 7c 7c 1c 0d ||20|minutes||..

Как видите, каждый сегмент заканчивается точками. Итак, как обработать сообщение? Я не могу заменить все точки, так как точки могут быть и в середине сообщения.

Любая помощь будет оценена.


person rk_sweetrascal    schedule 02.06.2014    source источник
comment
Если данные также содержат допустимые неэкранированные точки (\.), то данные ошибочны и склонны к ошибкам чтения.   -  person Dan Atkinson    schedule 02.06.2014
comment
Итак, как справиться с этим? Я попробовал то же самое сообщение со сторонним приемником сообщений HL7, который отлично обрабатывает сообщение. Поэтому я думаю, что мне нужно что-то реализовать в моем движке.   -  person rk_sweetrascal    schedule 02.06.2014
comment
Редактирование плохое, как и оригинальная презентация   -  person sqlab    schedule 02.06.2014


Ответы (3)


Сообщение, которое вы просматриваете, пришло к вам через TCPIP. Он упакован в протокол MLLP для передачи. Hex 0b — это заголовок сообщения, а 1c 0d — нижний колонтитул.

Дополнительную информацию о MLLP можно найти по этой ссылке: http://www.interfaceware.com/blog/common-hl7-transports/

Между прочим, 4 символа сразу после MSH определяют разделители, которые следует использовать во всем сообщении. Дайте мне знать, если вам нужно продолжение.

Изменить кажется, что я, возможно, неправильно понял вопрос. Кажется, в сообщении нет ничего плохого. Это возврат каретки, разделяющий сегменты. Надеюсь, это поможет.

person SixOThree    schedule 02.06.2014

Нет периода "." разделитель сегментов в сообщении HL7. Если вы посмотрите внимательно, то увидите, что разделитель сегментов равен 0d в шестнадцатеричном виде или 13 в десятичном представлении. Это стандарт. Просто ваша плоскость редактора показывает непредставимые байты в виде точек вместо символов.

Так что ваша проблема в другом.

Я рекомендую показывать ваше сообщение двумя разными способами, разделяя шестнадцатеричное и символьное представление.

person sqlab    schedule 02.06.2014

Я бы подумал о том, чтобы прочитать документацию Microsoft по формату HL7.

В частности, могут быть полезны следующие две статьи:

Стоит отметить, что точка не упоминается в качестве разделителя в документации Microsoft. Таким образом, похоже, что формат вашего сообщения нестандартен, и, кроме того, точки, которые не должны быть терминаторами, не экранируются (\.).

Похоже, вам может потребоваться запросить, чтобы ваш клиент избегал этих символов и, если возможно, следовал спецификации HL7.

person Dan Atkinson    schedule 02.06.2014