如何用FHIR Shorthand(SUSHI)定义新FHIR复杂类型及相关疑问
关于FHIR Shorthand与复杂类型定义的问题解答
问题1:是否可通过FHIR Shorthand定义可复用的新FHIR复杂类型?若不可行,有哪些替代方案?
完全可以,FHIR Shorthand(FSH)支持通过Complex关键字直接定义自定义复杂类型,示例代码如下:
Complex MyCustomComplexType description "自定义的可复用复杂类型" id 1..1 string "唯一标识" measurementValue 0..1 decimal "测量数值" unit 0..1 CodeableConcept "计量单位"
这段FSH会生成一个kind为complex-type的StructureDefinition,可在同IG的其他Profile、资源定义中直接引用。
如果因工具版本或特殊场景无法使用FSH,替代方案包括:
- 手动编写FHIR StructureDefinition的JSON/XML文件,直接指定
kind为complex-type,并定义相应的元素结构; - 使用FHIR官方提供的IG Publisher工具,结合模板文件生成复杂类型定义。
问题2:既然FSH是专为FHIR Implementation Guides(IGs)设计的语言,是否仅适用于IG,无法用于编辑FHIR规范的工件?
FSH的设计初衷确实是为了简化IG的开发,但技术上并不局限于IG场景。你可以用FSH生成任何FHIR规范级别的工件(包括核心复杂类型、资源等),只要最终生成的StructureDefinition符合FHIR元数据规范即可。
不过需要注意:FHIR核心规范的官方维护流程并未使用FSH,而是采用了内部工具链。如果是要贡献到FHIR官方标准,还是需要遵循官方的提交流程;但如果是自己维护私有规范或扩展规范,完全可以用FSH来编写和管理。
问题3:FHIR IG中是否允许定义kind为"complex-types"的StructureDefinition,以便在同IG或其他IG中复用?
当然允许,这是FHIR IG中实现类型复用的标准方式之一:
- 同IG内复用:定义好复杂类型后,在其他Profile或资源定义中直接通过类型名引用即可,FSH会自动处理引用关系;
- 跨IG复用:在目标IG的依赖声明中添加包含该复杂类型的IG,然后在StructureDefinition中通过完整的URL引用这个复杂类型即可。
这种方式能有效减少重复定义,提升IG的一致性和可维护性。
内容的提问来源于stack exchange,提问作者Stefan Hubert
相关产品推荐
相关产品推荐

