在 FHIR StructureDefinitions(配置文件)中,元素如何聚合到快照中?
In FHIR StructureDefinitions (profiles) how do elements aggregate into a snapshot?
一个 "roll up" 或聚合差异元素与 "base" 个元素如何创建快照?
快照生成将基本元素(基本配置文件中定义的元素)的属性与约束配置文件中的差异元素相结合。从约束到基础的元素匹配是按名称(如果两者都存在)和路径进行的。约束 ("homePhone") 中的切片使用裸路径 ("Patient.telecom") 作为基本元素。重新切片使用匹配的基础中最完整的切片。
基本元素可以来源于:
- 由约束配置文件的 StructureDefinition.base 值标识的 StructureDefinition 的快照。
- 这些规则递归应用到 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 的一部分)
一个 "roll up" 或聚合差异元素与 "base" 个元素如何创建快照?
快照生成将基本元素(基本配置文件中定义的元素)的属性与约束配置文件中的差异元素相结合。从约束到基础的元素匹配是按名称(如果两者都存在)和路径进行的。约束 ("homePhone") 中的切片使用裸路径 ("Patient.telecom") 作为基本元素。重新切片使用匹配的基础中最完整的切片。
基本元素可以来源于:
- 由约束配置文件的 StructureDefinition.base 值标识的 StructureDefinition 的快照。
- 这些规则递归应用到 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 的一部分)