2016-09-02 8 views
0

StructureDefinitionからコードを生成する場合、baseで参照されるリソースのクラスをスーパークラスとして使用するのは明らかです。他のリソースを拡張するリソースを扱う方法

max="0"max="*"によってオーバーライドされる場合StringからList<String>に例えば)baseリソースのプロパティの種類を変更することができる別のリソースに基づいてリソース。

これは、サブクラスがスーパークラスのインターフェイスに準拠しなければならないため(強く型付けされた言語では機能しませんが、一般化できません)。

これに対処する正しい戦略は何でしょうか?

differentialの代わりにsnapshotを使用し、baseリソースのクラスを拡張することはできません。

私はまだElementBackboneElementResourceDomainResourceような、より一般的なスーパークラスのいずれかを拡張する必要がありますか?

私の推論に欠陥がありますか?

答えて

1

リソースは他のリソースを「拡張する」ことはできません。基底リソースの要素のカーディナリティが1..1である場合、派生モデルは1より下位の基数も1よりも上位の基数も変更できません。

リソースを拡張する主な方法は次のとおりです。 *基本リソースのほとんどのところで* 0であると定義されている "extension"要素を使用します。技術的には、プロファイルを作成するときには、コア要素を引き締めたり、「拡張」要素の繰り返しの少なくとも一部に対する期待を拘束したりすることが常に制約されています。あなたが許可されカーディナリティに関する詳細な情報を見つけることができます

は、グレート明確化のための感謝をhere

+0

を変更します。だからこれはスーパークラスとして 'base'を使い、' differential'からサブクラスを生成すること(そして拡張を適用すること)が安全であることを意味しますか? –

+0

プロファイリングについて話すとき、サブクラスの全体の考え方はややこしいです。繰り返しアイテムを5つの異なる制約セットにスライスすると、どのようにサブクラスでそのアイテムを表示できるようにしたいですか?それは5要素ですか?まだ1つの反復要素ですか?同じコレクションの2つの異なるビューですか?私たちはまだ、プロファイルをクラスとして表現する最善の方法について私たちの頭を完全にはめ込んでいません。 –

+0

ありがとう、それは役立ちます。私はまだスライスが正確に何の周りに私の頭を包むために持っています。より多くの例を示すドキュメントはありますか?私が見つけたほとんどのものは非常に抽象的なものであり、あまり詳しく説明しません。ドキュメントは事実を確認するのに最適ですが、まだ慣れていない概念を頭で囲むときにはかなり難しいです。また、FHIRコミュニティがオンラインで議論している場所もありますか?すべての種類の質問がそれに適しているわけではありません。 –

関連する問題