1

我们在 Mirth Interface 上从医院获得 HL7 ADT 消息。我们在每条消息中获得诊断和过程代码,我们希望存储所有 50 个诊断和过程代码。注意=我们还想用这些代码中的每一个捕获相关\关联的字段。就像每个诊断代码都有代码日期、描述、类型、类别、poa、组。

  • 如果我们在单独的变量中捕获所有这些并将所有这些存储在列中 - 所以对于每个患者,大约 400 列填充在一个插入中
  • 如果我们存储为行,那么对于每个代码,都会触发一个单独的插入语句。这也会降低性能

什么可能是最好的方法来处理这个并存储在数据库中 - 因此,如果患者 x ADT 消息 1 将插入 3 个诊断代码(带有相关字段)。消息 2 可以附加并且将插入总共可能是 5 个代码?

谢谢

4

2 回答 2

1

如果您担心插入性能,最好的办法可能是每个代码一行,并带有插入时间的时间戳。如果该患者的代码已经存在,则不必担心更新现有行。插入具有当前时间戳的新行。在为患者提取代码时,假设可能存在重复并始终提取给定代码具有最新时间戳的行。

如果需要,您可以在高峰时间之外运行清理过程,以删除不再需要的旧行。

替代方案需要在决定更新或插入之前锁定和/或检查现有值。

于 2018-12-04T14:51:44.827 回答
0

听起来您想执行 UPSERT 操作,也就是 INSERT ... ON CONFLICT UPDATE。如果您使用 PostgresSQL,您会发现此链接很有帮助:https ://wiki.postgresql.org/wiki/UPSERT

于 2018-12-04T03:53:35.303 回答