4

我正在尝试在 Rails (ActiveRecord) 中实现 OpenEHR 参考模型,但我发现了一些问题,因为它适用于许多不同的类,

这是一个组合图:

组成图

如您所见,许多类从Locatableor Pathable* 中“继承”了几个属性(整个引用很大,几乎每个类都继承自它)。

此外,它将 data_types 建立为其他类,例如在同一个组合类中,language是 class CODE_PHRASE,具有两个属性(link)。

因此我遇到了两个问题:1)如何从抽象类继承属性,2)如何“包含”所需的“类”。

对于我在使用多态关联时想到的第一个问题。

对于第二个,我想使用 STI,但我很快找到了很多几乎相似的模型(实际上它们完全相同):CompositionLanguage, CompositionTerritory, EntrySettingEntryEncoding我只在type属性中使用“链接回”,例如:组合类最多可以有三个属性CODE_PHRASE,因为所有三个都引用不同的属性(语言、区域和类别),我认为我需要知道关联(知道组合有 3 个 code_phrases 是没有意义的,但是我不知道哪个是对应的属性)。另一方面,Entry类具有settingandencoding属性(链接)。

我意识到可能有不同的方法,但我真的很想知道 Rails(或 ActiveRecord)是否不是为此而设计的。或者,也许我缺少概念信息。

4

2 回答 2

5

openEHR RM 规范具有深度嵌套的继承和具有树层次结构的复合模式。

我无法通过 ActiveRecord 实现这种嵌套继承。下面的实现是一个模拟 openEHR RM 的例子。如果这个例子可以帮助你,我会很高兴。

https://github.com/skoba/openehr_rm_rails

于 2015-01-20T14:59:13.970 回答
1

你看过这个项目吗.. https://github.com/skoba/openehr-rails

我认为 Shinji 使用 Active Record。

就个人而言,鉴于 openEHR RM 的复杂结构,如果我刚开始,我可能会考虑使用带有 ORM 的 MongoDB 之类的东西。

我已经通过 openehr 技术列表向 openehr 技术社区指出了您的问题,以查看其他人是否可以提供帮助。

伊恩

于 2015-01-20T08:22:24.007 回答