Обнаружение и удаление дубликатов сообщений HL7 в журнале - PullRequest
0 голосов
/ 25 июня 2019

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

Помимо просмотра всего, что ощущается в Интернете, я пытался распространять текст в Iguana, PowerShell и Excel, и я недостаточно знаком с MirthConnect, чтобы использовать его. Я не женат ни на одном решении, мне просто нужно решение и PDQ.

Я нашел довольно хорошую отправную точку в https://www.secretgeek.net/ps_duplicates, и я массировал ее, но все еще не получил полного решения. На данный момент я в основном сбросил его на ноль, потому что ничто из того, что я сделал, не улучшило его (в основном, я ломал его несколько раз).

$hash = @{}                                                 #Define an empty hashtable
gc "c:\Samples\Q12019.txt" | #Send the content of the file into the pipeline...
  % {
      if ($hash.$_ -eq $null) {                             #if that line isn't a key in the hash table
                                                              # $_ is data from the pipe
        $_                                                  #send the data down the pipe
      };
    $hash.$_ = 1                                            #add that line to the hash so it doesn't resend
  } > "c:\Samples\RadHx Test Q12019.txt"

Это делает некоторые вещи, которые я не понимаю. Он принимает файл, и на выходе появляется новый пробел B E T W E E N каждый символ в файле. Я даже не могу сказать, удаляет ли он дубликаты, и я не смог заставить его прекратить делать это. Я также не уверен, что он читает все сообщение, включая все его сегменты. Пример 2 на https://healthstandards.com/blog/2007/09/10/variations-of-the-hl7-orur01-message-format/ выглядит достаточно близко к тому, с чем я имею дело в качестве примера загрузки, просто добавьте еще 2000 в текстовом файле.

Упрощенное объяснение: У меня есть текстовый файл с несколькими блоками связанного текста. Каждый блок имеет одинаковую начальную последовательность символов, скажем, «ABC». Блоки имеют произвольную длину и не обязательно заканчиваются одной и той же строкой, но все блоки заканчиваются CRLF. Проблема: Каждый блок может быть не уникальным, но мне нужно исключить повторяющиеся блоки текста, чтобы файл содержал только один экземпляр каждого блока текста.

1 Ответ

0 голосов
/ 11 июля 2019

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

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

Вы можете хранить информацию в globalChannelMap для сравнения значений в сообщениях. Карта существует только в памяти и не переживет перезапуска, но это не должно быть проблемой для вашего единовременного преобразования. Если вам нужно что-то более постоянное, сохраните значения в базе данных.

...