4

Rails (ActiveRecord) で OpenEHR 参照モデルを実装しようとしていますが、多くの異なるクラスで動作するため、いくつかの問題が見つかりました。

コンポジションの図は次のとおりです。

構成図

ご覧のとおり、多くのクラスがLocatableor Pathable* からいくつかの属性を「継承」しています (参照全体が巨大で、ほとんどすべてのクラスがそれを継承しています)。

また、data_types を他のクラスとして確立します。たとえば、同じ構成クラスでlanguageCODE_PHRASE、2 つの属性 ( link ) を持つ class です。

したがって、1) 抽象クラスから属性を継承するにはどうすればよいか、2) 必要な「クラス」を「含める」にはどうすればよいかという 2 つの問題に遭遇します。

最初の問題については、ポリモーフィック アソシエーションを使用する際に考えました。

2 つ目については、 STI を使用することを考えましたがCompositionLanguage、ほとんど同じようなモデル (実際にはまったく同じです) をすぐに見つけることができます:構成クラスは、 で最大 3 つの属性を持つことができます。3 つすべてが異なる属性 (言語、地域、カテゴリ) を参照するため、関連付けについて知る必要があると思いました (構成には 3 つの code_phrases があることを知っても意味がありませんが、どれが対応する属性かわかりませんでした)。一方、クラスにはand属性 ( link ) があります。CompositionTerritoryEntrySettingEntryEncodingtypeCODE_PHRASEEntrysettingencoding

さまざまなアプローチがある可能性があることは理解していますが、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

シンジはアクティブレコードを使っていると思います。

個人的には、openEHR RM の複雑な構造を考えると、もし私が始めていたら、ORM で MongoDB のようなものを使用するように見えるかもしれません。

openehrテクニカルリストを介してopenehrテクニカルコミュニティにあなたの質問を指摘し、他の人が助けてくれるかどうかを確認しました。

イアン

于 2015-01-20T08:22:24.007 に答える