在 FHIR StructureDefinitions(配置文件)中,元素如何聚合到快照中?

In FHIR StructureDefinitions (profiles) how do elements aggregate into a snapshot?

一个 "roll up" 或聚合差异元素与 "base" 个元素如何创建快照?

快照生成将基本元素(基本配置文件中定义的元素)的属性与约束配置文件中的差异元素相结合。从约束到基础的元素匹配是按名称(如果两者都存在)和路径进行的。约束 ("homePhone") 中的切片使用裸路径 ("Patient.telecom") 作为基本元素。重新切片使用匹配的基础中最完整的切片。

基本元素可以来源于:

  1. 由约束配置文件的 StructureDefinition.base 值标识的 StructureDefinition 的快照。
  2. 这些规则递归应用到 StructureDefinition "tree"(基础到基础到基础广告恶心)。

如果约束配置文件包含来自复杂类型(例如 path=Patient.telecom.system)的元素,则基本元素将在以下的第一个中找到:

  • 在 type.profile 中为元素(如果有)标识的配置文件。
  • HL7 提供类型的数据类型配置文件(例如本例中的 ContactPoint)。

使用以下方法之一将元素引入快照:

  • K - 匹配元素必须存在于基础和约束配置文件中的匹配键
  • F - 从基础开始固定,不能被覆盖。如果存在于差异中,则该值必须与基数完全匹配
  • I - 如果约束中不存在则从基础继承
  • N - 不继承,可以在约束中设置。如果微分中blank/missing,快照中将是blank/missing。
  • F/N - 如果存在于基础中,约束必须匹配。如果没有,可以设置一个值。
  • A - 从基础聚合 - 基础实例添加到差异实例
  • R - 受基限制 - 差异必须是基实例的某个子集

逐个元素:

  • 路径 (K) - 匹配的基础和约束都需要。
  • 代表(女)
  • 名称 (K) - 基础和约束都需要如果合适
  • 标签 (I)
  • 代码 (A)
  • slicing (F/N) - 如果基数被切片,约束必须匹配。如果没有,可以引入切片。另见 reslicing.
  • 短 (I)
  • 定义(一)
  • 评论(一)
  • 别名 (A)
  • min (I) - 约束中的最小值必须大于或等于基数。切片不受此约束(由于其他切片可能满足基的最小约束,当基为 min=1 时,切片可能为 min=0)。
  • max (I) - 类似于 min.
  • 基础(女)
  • 类型 (R) - 类型必须在基本元素中存在代码。他们可以添加配置文件 and/or 使用不同的配置文件多次指定类型代码。
  • nameReference (F)
  • 默认值[x] (F)
  • 意思是缺失时 (F)
  • 固定[x] (F/N)
  • pattern[x] (F/N) - 例外是模式可以细化为固定。
  • 示例[x] (I)
  • 最小值[x] (I)
  • 最大值[x] (I)
  • 条件(A)
  • 约束(A)
  • 必须支持 (F/N)
  • isModifier (F)
  • isSummary (F)
  • 绑定 (A)
  • 映射 (A)

Chris,我已经开始着手这方面的工作,但这确实是一项正在进行的工作。愿意与您合作:

https://github.com/ewoutkramer/strucdefdoc/wiki/SD's-expressing-constraints

(它是更完整地描述 StructureDefinition 的 wiki 的一部分)