【问题标题】:Database structure - medicine usage数据库结构——药物使用
【发布时间】:2017-10-08 20:57:17
【问题描述】:

我正在尝试制作一个用于跟踪用户药物使用情况的 Android 应用。 问题是我有非常不同的服药设置。 用户应该提供有关何时以及如何服药的信息。

一些附加信息,如(进食前/进食后)可以存储在药物描述的单独表格中(例如,可能不需要将其与使用时间一起存储)。

此外,这不是包含用户实际使用时间信息的表格。 (这里我有一个简单的医学 ID 和时间戳表)。

所以情况看起来像这样。用户将使用设置为:

  • 阿司匹林 - 饭前早餐和晚餐
  • 抗生素 - 每 8 小时...

我想我会将这些数据存储在数据库中,但我不知道该怎么做。或者以不同的方式存储它可能会更好(例如共享首选项、JSON/XML、文本文件)?

基本上似乎有以下几种“用法”:

  • 每天 n 次(定期,例如每 8 小时一次)
  • 某些餐点(早餐、午餐、晚餐)
  • 每天一次(每天一次/每周一和周六)

问题是:

保存这些数据(在 Android 设备上)的合适解决方案是什么? 并且(如果使用 SQLite)您对数据库方案有何建议?

-- 编辑 -----

只是为了说清楚。 我不需要用户描述文字什么时候吃药。 我需要的是根据给定设置设置警报的信息。所以最后我需要一个我以后可以匹配的值,比如

(if currentTime == breakfastTime)
   ... 

或许

(if medicine.takeAtBreakfast)
   ...

这会使为用户描述信息的字符串值变得无用。第一个想法是用于数据库的布尔列,用于早餐、午餐、晚餐以及工作日的相同。但这似乎浪费了很多空间。

【问题讨论】:

  • 你到底在问什么?您想要数据库模式、Java 代码或其他内容吗?你的问题似乎有点宽泛。
  • 嗯,首先,问题是这是否适用于数据库。如果是这样,该计划将是惊人的!
  • 嗨 Tobias,我在下面尝试了一个答案。我们可以对其进行迭代,直到我们找到您认为可用的东西。

标签: android sqlite database-design persistence


【解决方案1】:

药物通常每天服用不超过几次。情况可能并非总是如此,但可以安全地假设大多数时间都是这种情况。在您的描述中,服药时间表现得相当好,例如每天两次,每 8 小时一次,但实际上治疗方案可能比这更复杂。一般来说,我们应该期望医生可以指导患者在一天中的任何时间点服药几次。

考虑到这些假设,我们可以考虑下表来服用药物:

regimen (id, subscription_id, medication_id, time_of_day, comment)

此表中的给定条目将对应于一张处方、一位患者、一种药物和一天中的给定时间。对于需要在白天服用一剂以上的处方,每次服用都会有记录。

处方表将记录给定 Rx 中的药物,以及每种药物的剂量:

prescriptions (id, date, doctor_id, patient_id, medication_id, dose)

这只是一个开始,您需要药桌,可能需要几张。此外,还可以有一个医生表和相关元数据。

编辑:

要处理每天一次(即一天中的任何时间)的处方,我们可以将time_of_day 设置为NULL。对于每天两次,我们可以使用两个记录,每个记录代表一个剂量。我们可以使用 cmets 列来表示第一剂、第二剂等,也可以添加另一列。

【讨论】:

  • 所以这意味着我需要一个表格用于“用餐期间”另一个“每小时”另一个“每日”具有相同模式的表格,并在相关表格中输入不同的处方?我担心这可能会导致数据集“碎片化”,不清楚哪个表中有哪些数据可用。
  • @TobiasReich 不,因为这些时间中的每一个都只是一个或多个时间点。只需一张桌子用于药物调度。我添加了一个 comment 列,其中可能包含例如“早餐时”或“第二剂”等文本。
  • 我不明白“一天中的时间”是如何工作的。毕竟,有些只是每天,有些在不同的时间(即进餐)。那么我放在那里的信息是什么?例如,如果它是以“每天”为基础的表格,我会写一个工作日的整数。对于“膳食”,类似的解决方案,如 1= 早餐、2= 午餐、... 是可能的。仍然有一个混合数据集似乎使这无用。
【解决方案2】:

有一张桌子,上面有各种用途(一天的时间,用餐)。然后 在您的交叉表中有一列金额,指定使用次数(例如,每天 3 次,早餐)。

【讨论】:

  • 也就是说,我有一个关于使用类型的额外表格。还有一个关于使用时间的。我看到 StartDate 和 EndDate 但如何将其映射到例如“早餐”还是“周一和周三”?
  • 开始日期和结束日期只是灵感。如上面的答案,您可以考虑我的“金额”栏,即“评论”栏。无需将所有子类型等映射到表。很快就会变得很麻烦。
  • 那么,我怎样才能在这三行中存储不同类型的用法呢?
  • 在我的例子中你不能。您只需输入您的使用类型(例如餐食)并在金额栏中输入文本(“早餐和晚餐”);这是解决问题的一种非常简单的方法。
  • 啊,我明白了。问题是,我需要确切的日期(所以我可以设置闹钟)。所以文本“早餐”不适用于我的情况。
猜你喜欢
  • 2023-03-16
  • 2013-09-06
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 2014-03-12
  • 2014-02-06
  • 2010-10-30
相关资源
最近更新 更多