能否在SUSHI生成的FHIR IG中展示非TX服务器术语集的扩展代码?
在SUSHI生成的FHIR实现指南中展示第三方术语服务的扩展代码
明确结论:可以实现,但直接在ValueSet资源中同时定义compose和expansion会触发SUSHI的内置校验规则——SUSHI默认要求ValueSet要么是可组合的(仅保留compose),要么是已扩展完成的(仅保留expansion),两者共存会导致编译报错。
可行解决方法
方法1:用SUSHI的Instance语法直接定义已扩展的ValueSet实例
如果不需要SUSHI对ValueSet的组合逻辑做校验,只想直接展示外部服务扩展后的结果,可使用Instance语法绕过SUSHI对ValueSet资源的特殊处理:
Instance: formVSInstance InstanceOf: ValueSet Title: "form" Description: "Specifies if an event takes place." * status = #active * experimental = false * language = #sv-SE * expansion.identifier = "https://terminologitjanst.se/fhir/ValueSet/$expand?url=http://test.se/fhir/CodeSystem/form" * expansion.timestamp = "2025-10-17T09:00:00Z" // 手动添加外部服务扩展后的代码项 * expansion.contains.system = "http://test.se/fhir/CodeSystem/form" * expansion.contains[0].code = #yes * expansion.contains[0].display = "Ja" * expansion.contains[1].code = #no * expansion.contains[1].display = "Nej"
这种方式下,SUSHI会将其视为普通FHIR实例处理,不会校验compose与expansion的冲突,最终生成的IG会完整展示扩展内容。
方法2:修改SUSHI配置跳过自动扩展校验
若需要保留compose部分,同时让IG展示外部术语服务的扩展结果,可在IG的ig.ini文件中添加配置,让SUSHI跳过对目标ValueSet的自动扩展校验:
在ig.ini中加入:
[ValueSet] form-vs = skip-expansion
之后回到FSH代码仅保留compose部分,再配合FHIR Publisher的命令行参数调用外部术语服务完成扩展:
java -jar publisher.jar -tx https://terminologitjanst.se/fhir -ig ig.ini
Publisher会调用指定的第三方术语服务执行$expand操作,最终将扩展结果嵌入IG。
方法3:手动扩展后导入资源文件
直接用外部术语服务执行$expand操作,将返回的完整ValueSet JSON/XML文件放到IG的input/resources目录下,SUSHI会自动导入该资源,编译时不会触发冲突校验,最终IG会展示这个已扩展的ValueSet。
注意事项
- 方法1需手动维护扩展后的代码项,适合代码集固定的场景;
- 方法2需确保FHIR Publisher能正常访问第三方术语服务,且服务支持
$expand操作; - 方法3操作最直接,适合不需要动态更新扩展结果的场景。
内容的提问来源于stack exchange,提问作者user3378248
相关产品推荐
相关产品推荐

