我正在设计一个健康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
Run Code Online (Sandbox Code Playgroud)
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 …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一种表单构建器,它允许我以灵活的方式定义、显示和存储“测试”。即允许用户通过 Web 界面创建新类型的测试/表单(“分组”)并定义一组将显示在表单上的字段(任何类型的字段,包括日期、文本、收音机、复选框等)。我还需要一个结果表来存储保存在每个表单/测试中的值。
作为一个不充分的例子,到目前为止我有以下 3 个表:
dd_TestGrouping
- TestGroupingID [pk]
- TestGroupingName "Algebra-1"
- TestGroupingTypeID "Math"
dd_TestFields
- TestFieldID [pk]
- TestGroupingID [fk]
- TestFieldName "Circumference"
- TestFieldType "TextBox"
- Sequence
TestResults
- TestResultID [pk]
- TestFieldID [fk]
- value "50"
- Unit "CM"
Run Code Online (Sandbox Code Playgroud)
上面的问题 - 如果没有别的 - 我不确定如何动态显示下拉列表和链接的单选框/复选框。另外,我该如何处理验证?
提前感谢您的任何帮助/指示。