精致元素的基础是什么?

时间:2015-11-19 03:19:31

标签: hl7-fhir

考虑逻辑片段:

Patient (Profile A)
   identifier (sliced on system) 0..*
      myclinicnbr (slice 1) 0..1
      yourclinicnbr (slice 2) 0..*

然后:

Patient (Profile B, base is A)
   identifier (sliced on system) 0..2
      myclinicnbr (slice 1) (no diff)
      yourclinicnbr (slice 2) 0..*

在B中,有效基数为:

  • 标识符0..2(显式)
  • myclinicnbr 0..1(受A :: myclinicnbr约束)
  • yourclinicnbr 0..2(受B ::标识符约束)

问题是:

  • B应该使用B :: yourclinicnbr验证基数与B :: identifier不兼容吗?
  • 必须B :: yourclinicnbr覆盖A :: yourclinicnbr以使其符合B :: identifier,还是不能声明?
  • 对于B中的每个部分,正确的快照基数是什么?

1 个答案:

答案 0 :(得分:1)

我认为我们没有说片的基数必须是父母的正确子集。每次引入新切片时,这样做需要很多笨拙的数学 - 添加minOccurs = 1切片很容易强制减少一堆其他0..n切片的最大值。期望是实例必须满足基本元素和切片的约束,所以如果你有一个带有一堆0 .. *切片的0..3元素,你就不能拥有一个包含多个重复3次,无论切片可能指示0 .. *。因此实现行为不会令人困惑。然而,从文档的角度来看,它可能会令人困惑,并且在某些情况下可能会导致软件混淆。

我倾向于让配置设计师知道切片基数是否是元素基数的结构数学子集。在某些情况下,它会变得简单而且值得。在其他情况下,它可能比努力证明更痛苦。如果您认为我们需要更加严格,那么欢迎提出具有理由的变更提案。