6

我正在设计一个健康 SaaS 应用程序,希望能在初始建模方面提供一些帮助。我从这个线程开始确认我应该使用 EAV - 由于临床数据的稀疏性,答案是肯定的。然后,我开始考虑可能使用 NoSQL 选项,而不是尝试将其放入 SQL 中。似乎两者结合起来效果最好。我将尝试解释要求和我的想法,并希望得到任何反馈。我正在使用.net。

要求 在最高级别,我们有一个“病人”。对于需要一些医疗帮助的患者来说,会发生一些事情,我们称之为“事件”。对于每个“事件”,可以多次看到“患者”,称为“访问”。每次“访问”存储所有临床数据(测试/历史/等)。所以我们有:

患者 1 - ∞ 事件 1 - ∞ 就诊 1 - 1 临床数据(许多潜在的键/值对)

解决方案(反馈会很棒)

SQL 表

Patient
- PatientID
- other patient info

Incident
- IncidentID
- PatientID
- Other incident info

Visit
- VisitID
- IncidentID
- Datetime

NoSQL DocumentDB(可能是 RavenDB)

{ // Visit document - id: visits/12345
 "Patient": {
   "PatientId": "patients/54321",
   "Name": "John Smith"
 },
 "Incident": {
   "IncidentId": "incidents/55555",
   "Name": "Cardiac Arrest"
 },
 "VisitData": {
   "BP": "110/70",
   "Hypertension": "True"
   "Cardiac Disease": "Angina"
   "Stroke": "False"
   .... (could be tens or hundreds of key/value pairs)
 },

}

这就是我到目前为止所拥有的。除了一般意见(欢迎所有)之外,我想知道是否有人认为我应该将每位患者的所有事件和就诊记录在一份文件中,而不是每次就诊一份文件(以上应该是这样)。我相信文档可能会变得“太大”(不知道太大在基于文档的数据库中意味着什么)并且视图几乎总是基于访问 - 尽管我们还需要显示跨访问的趋势报告.

提前致谢!!

麦克风

4

2 回答 2

0

混合使用数据库可能效果最好。现有方法使用 EAV,但问题在于嵌套事实 - 关于药物相互作用的警报可能是 SQL 表中的主事件

但随后有多严重的警报,发送给谁,哪 2 种药物 - 这些详细信息可以转到基于文档的 noSQL 数据库。

于 2012-09-21T18:38:44.177 回答
0

根据您的要求,这看起来很合适。

我认为可能还有其他事情发生,这可能是“状况”,不一定是任何患者事件的一部分。例如,患有高血压的人可能只是因为手指骨折而出现这种情况。

此外,事件可能很难定义——它是单一时间点事件还是恶化的渐进持续时间?也许这意味着事件实际上只是一次就诊的标记,或者您访问了一次访问关联表,该表允许您声明一次就诊是另一次就诊的后续行动,从而建立患者接受的护理的层次结构或网络。

只是一些想法...... hth

编辑 - 事后诸葛亮:我肯定会推荐一个带有正确规范化表的 SQL 数据库......

于 2010-12-08T15:54:58.080 回答