Какой способ обработки данных HL7 в Mirth и Database можно оптимизировать?

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

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

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

Спасибо


person user3288577    schedule 04.12.2018    source источник


Ответы (2)


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

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

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

person agermano    schedule 04.12.2018

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

person Neil VanLandingham    schedule 04.12.2018