对数据库表的处方/药物使用集进行建模

时间:2014-11-10 21:22:38

标签: sql database database-design relational-database data-modeling

不确定如何在关系数据库中的某个时间点对药物进行建模。到目前为止,我所想到的每种方式似乎都有冗余数据。

需要能够让用户说我服用了x片或者某些药物。

目前我有一个日记表,与条目有一对多的关系。每个条目都有描述,日期,时间等,都很好。但我希望能够服用大量的药物。

目前的想法是有一个药物表,它与自身具有递归的多对多关系,因此一种药物可以含有多种其他药物,或者它本身可能是活性成分。

因此对于药物“可待因”而言。有效成分是可待因' (实际上不是活性成分,但说明了这一点)

但是你也有含有可待因和对乙酰氨基酚的药物,如cocodamol。因此必须映射到“可待因”和“可编程序”。排和'扑热息痛'行。

如何让用户有日记,添加条目说:

我服用了2种可可碱30mg可待因和500mg对乙酰氨基酚强度?

作为原始数据结构,它将类似于(忽略所有数据库部分):

{'diary': 
    {'entry': 
        {'date': '2014-11-11', 
         'medication': {
             'cocodamol': {
                 'codeine': 60, 
                 'paracetamol': 1000
             }
         }
     }
 }

这是一个表而不仅仅是平面文本字段的原因是

a) I want to create statistics for medication taken
b) I want the drug table to stay generic so I can link information to that drug
c) Would be useful to store prescription data as well as diary entries, so a Dr has prescribed taking 2 cocodamol 30/500mg up to every four hours

这引出了权重去哪里的问题,以及如何对数据进行一般建模。

已经制定了我认为应该是什么样的关系图,但我还不清楚我将如何服用30 / 500mg剂量的可可达,以下无论测量单位是多少,都应该照顾任何单剂量。

entity relation diagram of diary -> drugs

最好只输入{cocodamol:30 / 500mg}然后在后端有两个剂量,一个30mg可待因,然后一个500mg扑热息痛?

这可能意味着将Dosage链接到ActiveIngredient表而不是Drug,然后使用该链接的反向来确定用户使用的内容。因此,如果我们知道它们含有500mg对乙酰氨基酚和30mg可待因,它们都与药物cocodamol有关,我们可以重新制作药物而不是其组成部分。

干杯,

布雷特

(其中一些表中缺少某些字段,这些字段仅用于解决问题(我认为))

1 个答案:

答案 0 :(得分:0)

你非常接近。

忘记重量,你不必要地从自然数据转向。您需要一个描述药物的实体作为您的直接入学儿童。这包括与品牌名称的关系(您无法使用当前模型导航到该品牌名称),并指示药物和剂量。

举个例子,假设你服用了一片Percocet 2.5毫克/ 325毫克。 (你可以用其他剂量服用Percocet)

品牌名称中有一行:

id: 16, name:"Percocet"

药物中有两行:

id: 5, name:"OxyContin"

id: 12, name:"Acetaminophen"

Medication中有三行:

id:20, name:"Percocet 2.5 mg/325 mg", brand_name_id: 16

id:21, name:"Percocet 5 mg/325 mg", brand_name_id: 16

id:22, name:"Percocet 7.5 mg/325 mg", brand_name_id: 16

...每个都有Dose中的两个子行:

medication_id: 20, drug_id: 5, Unit:"mg", Quantity:"2.5"

medication_id: 20, drug_id: 12, Unit:"mg", Quantity:"325"

medication_id: 21, drug_id: 5, Unit:"mg", Quantity:"5"

medication_id: 21, drug_id: 12, Unit:"mg", Quantity:"325"

medication_id: 22, drug_id: 5, Unit:"mg", Quantity:"7.5"

medication_id: 22, drug_id: 12, Unit:"mg", Quantity:"325"

所以现在你的Entry行只是:

medication_id: 20 (plus date, time, notes, etc.)

我也会把这些名字搞得一团糟。