跳到主要内容

5.5制品发布方法

5.5.1 使用HL7官方平台发布

在本地使用文本编辑器或其它设计工具完成设计制品后,就可对所有希望发布的制品进行打包。由于FHIR的包管理是基于NPM的包管理标准,因此实际上是使用NPM进行打包和发布。FHIR仅用到NPM的部分所需要的功能,所以FHIR的包管理标准可以认为是NPM包管理标准的一个子集。

同NPM一样,每个要发布的FHIR包应包含一个package.json文件,其中包含了对该包的元数据定义。通常可以将结构定义、术语、示例资源分开打包。每个包应具有一个全局唯一的包名,和一个语义化版本号。

尽管可以只打包术语、结构定义和示例等资源,但完整的FHIR规范项目应当包含实施指南。官方提供了用于发布实施指南的工具IGPublisher,以及配套的实施指南模板。IGPublisher工具可以将基于模板的实施指南发布为一个静态网站,同时也具由将实施指南引用的设计制品进行打包的功能。

实施指南的作者不需要从头开始设计一整个网站,只需要从GitHub上下载几个由FHIR官方提供的项目,就可以了解到如果使用实施指南模板、示例和编写向导,来完成整个网站的编写与构建。

项目名称项目描述GitHub仓库
ig-guidance实施指南创建向导https://github.com/FHIR/ig-guidance
sample-ig实施指南示例https://github.com/FHIR/sample-ig

表格:实施指南创建与示例项目

模板标识模板描述GitHub仓库
fhir.base.templateFHIR基础模板,可被HL7组织以外使用https://github.com/HL7/ig-template-base
hl7.base.templateHL7基础模板,继承自FHIR基础模板https://github.com/HL7/ig-template-hl7
hl7.fhir.templateHL7 FHIR基础模板,继承自HL7基础模板https://github.com/HL7/ig-template-fhir
hl7.davinci.templateDa Vinci项目模板,继承自HL7 FHIR基础模板https://github.com/HL7/ig-template-davinci
hl7.cda.templateCDA模板,继承自HL7基础模板https://github.com/HL7/ig-template-cda

表格:实施指南模板

ig-guidance项目本身就是一个使用了fhir.base.template模板的实施指南。下载GitHub项目后,先确保本机安装了Java SDK、Ruby和Jeckyll。然后可依次执行_updatePublisher.bat(下载最新的IGPublisher工具和批处理脚本)及_genonce.bat(生成网站)。生成作业完成后可在output目录下得到已生成的网站,打开index.html即可在本地访问。整个过程无需另外下载模板项目,所采用的模板标识在项目根目录下的ig.ini文件中指定,并在生成网站时自动下载。

sample-ig项目的生成和ig-guidance项目采用相同的流程,但该示例项目包含了术语、结构定义、示例等模拟真实项目的不同资源作为制品一同发布,因此更接近真实的实施指南项目。所有资源会被打包为output目录下的package.tgz文件。

5.5.2 使用Simplifier平台发布

在Simplifier平台上可以创建FHIR规范项目,并发布规范制品。Simplifier提供了Forge工具(免费授权不能用于商业用途)用于在本地设计Profile,设计完成的Profile和扩展等结构定义文件可以直接通过Forge发布到Simplifier平台。已发布的结构定义资源会被分配一个Resource ID用于跟踪。Forge同时能够快速加载保存在本地目录中的资源文件(通常包括一致性资源和示例资源),并可通过过滤功能快速查询到期望的资源类型和文件。

HL7 China

上图显示了通过Forge工具(30.1.0版),在左侧会话浏览器中打开一个名为TestProject的项目,在右侧项目文件列表中,通过筛选StructureDefinition和Profile,显示出满足条件的结果文件。在图中我们可以看到一个文件名为MyPatient.StructureDefinition.xml的Profile文件。当对这一文件进行变更后,可以通过Synchronize按钮,将所有产生变更的文件同步到Simplifier网站上,供其他人查看。这一同步操作是双向的,它也会将网站上最新的结果同步到本地,这便于团队协作开发规范。

HL7 China

上图显示了TestProject项目的介绍首页,包含了项目中各种类型制品的统计与入口,为项目声明的标准URL,资源示例,状态统计以及项目简介。

HL7 China

进入项目资源界面,可以过滤、搜索和浏览发布到该项目下的规范制品,如上图所示。

HL7 China

点击进入一个Profile文档页面,可以通过切换右上角的视图,来查看Profile与原始资源类型之间的差异(diff),混合Profile与原始资源后的中间结果(hybrid),和在原始资源类型上应用Profile后的最终结果(snap),这三种不同的结构定义视图。这便于实施者了解设计者对规范做出的细节调整,以便其在程序中快速调整实现。这一在线文档本身是实时动态的,可以通过资源引用中的具体Profile定义,超链到相关的Profile文档页面中。因此,资源的模块化组合也在文档中体现为嵌套的Profile定义。同时还可以通过Related功能页签,找到本Profile被其它规范引用或引用其它规范的双向关系。

HL7 China

在Simplifier平台上可以直接将一个项目打包发布,只需要对当前选择的项目创建一个发布包。同时也可以指定本项目所依赖的发布包,以便本项目中的规范作为其它规范(包括官方的FHIR规范或者第三方规范)的衍生规范。上图演示的,是将上文所述TestProject项目作为一个包进行发布。

Simplifier也提供了命令行的方式进行批量操作,使用Firely Terminal这一跨平台的命令行工具可以在本地管理文件形式的一致性资源。这一工具也可方便地将自动化工作流集成到CI/CD管道中。通过Firely Terminal也可进行包管理,可更直观地完成FHIR包的安装与发布工作。

在Simplifier平台可以直接创建、编辑和发布实施指南。与HL7官方提供的实施指南创建方式不同的是,在Simplifier平台上创建的实施指南使用的是Simplifier自己提供的模板和样式,而不能使用HL7官方提供的模板。但是在Simplifier平台上创建的实施指南仍然可以将网站在线导出成压缩包下载到本地,包中包含了ImplementationGuide资源文件、网页文件及其它制品文件,理论上可以通过它们转换为HL7官方形式的实施指南。

(撰写人:卫宁健康科技集团股份有限公司 汪汇)