如何处理扩展其他资源的资源

时间:2016-09-02 12:48:22

标签: hl7-fhir

当我从StructureDefinition生成代码时,将base中引用的资源的类用作超类是显而易见的。

如果base被覆盖,则基于其他资源的资源可以更改String资源的属性类型(例如,从List<String>更改为max="0" max="*")。

这会破坏强类型语言,因为子类必须符合超类的接口(只能专门化但不能泛化)。

处理这个问题的正确策略是什么?

我可以使用snapshot代替differential,而不是扩展base资源的类。

我是否还应扩展其中一个更常规的超类,例如ElementBackboneElementResourceDomainResource

我的推理是否有任何缺陷?

1 个答案:

答案 0 :(得分:1)

资源无法“扩展”其他资源。如果基本资源具有1..1元素的基数,则派生模型不能将低于1的基数更改为高于1的基数。

“扩展”资源的主要方式是利用“扩展”元素,该元素在基础资源中几乎无处不在。所以从技术上讲,当你创建一个配置文件时,你总是在制约 - 要么收紧核心元素,要么至少限制对“扩展”元素的一些重复的期望。

您可以找到有关允许的基数更改的更多信息here