Какой может быть оптимизированный способ обработки данных HL7 в Mirth и Database? - PullRequest
0 голосов
/ 04 декабря 2018

Мы получаем сообщения HL7 ADT из больниц через интерфейс Mirth.Мы получаем коды диагностики и процедур в каждом сообщении и хотим сохранить все 50 кодов diag и proc.Примечание = Мы также хотим захватить связанные \ связанные поля с каждым из этих кодов.Как и у каждого диагностического кода есть дата кода, описание, тип, категория, poa, группа.

  • Если мы фиксируем все это в отдельной переменной и сохраняем все в столбцах - так, для каждого пациента в населенном пункте около 400 столбцоводна вставка
  • Если мы храним как строки, то для каждого кода запускается отдельная инструкция вставки.Это также ухудшает производительность

Какой может быть лучший подход для обработки этого в веселье и сохранения в БД - так что если для пациента x ADT Сообщение 1 вставит 3 кода диагностики (со связанными полями).Сообщение 2 можно добавить, и можно будет добавить всего 5 кодов?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

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

При желании вы можете иметь процесс очистки, который выполняется вне часов пикудалить старые строки, которые больше не нужны.

Альтернативы требуют блокировки и / или проверки существующих значений перед принятием решения об обновлении или вставке.

0 голосов
/ 04 декабря 2018

Звучит так, будто вы хотите выполнить операцию UPSERT, также как INSERT ... ON UPFATE CONFLICT.Если вы используете PostgresSQL, вы найдете эту ссылку полезной: https://wiki.postgresql.org/wiki/UPSERT

...