如果看了前一篇[InterSystems IRIS医疗行业版创建FHIR服务器](https://cn.community.intersystems.com/post/intersystems-iris%E5%8C%BB%E7%96%97%E8%A1%8C%E4%B8%9A%E7%89%88%E5%88%9B%E5%BB%BAfhir%E6%9C%8D%E5%8A%A1%E5%99%A8),应该您已经搭建好了FHIR服务器和FHIR资源仓库。除了使用FHIR REST API来操作这个FHIR服务器,您还可以更直观地看看它的价值 - 使用SMART on FHIR应用。这次,基于上次建好的FHIR服务器,我们用10分钟把一个SMART on FHIR运行起来。 ## SMART on FHIR背景 SMART是Substitutable Medical Applications and Reusable Technology的缩写,它的目标是创建可以被替换、可以复用的医疗应用,简单说就是希望医疗应用可以像我们的手机应用一样:不喜欢当前的天气应用,那么就换一个。SMART,这个起于2011年的哈佛和波士顿儿童医院的合作项目,在2013年注意到并快速采用了FHIR,成就了今天的SMART on FHIR。 不再需要处理数据持久化、数据模型标准化等问题,SMART on FHIR应用相当的**轻量级**,因此也容易快速开发。它主要借助FHIR API和OAuth认证,连接到FHIR服务器上操作数据。SMART on FHIR应用都是Web应用,它可以独立运行,也可以嵌入到任何现有应用中,例如TrakCare(InterSystems的EMR产品)和HealthShare Personal Community (InterSystems的患者门户),快速丰富和提升这些应用的价值。 现在[SMART on FHIR应用商店](https://apps.smarthealthit.org/)里已经有很多针对医生或者患者的应用可供免费下载和测试,初步实现了SMART目标。不论您是想借助SMART on FHIR理解FHIR、还是想开发SMART应用、亦或直接测试和使用应用商店里的现成应用,都希望这篇文章对您有所帮助。   ## 测试SMART on FHIR应用 完整的SMART on FHIR应用涉及到OAuth认证,我们先从一个简单的、无需认证的环境开始,快速了解一下SMART on FHIR应用。在下一篇中,我们将在InterSystems IRIS搭建完整的支持环境:不仅是FHIR服务器和FHIR资源仓库,还包括OAuth认证服务器。 ### 1. 下载SMART on FHIR应用 我们先下载一个SMART on FHIR应用,[SMART on FHIR应用商店](https://apps.smarthealthit.org/)里有很多不错的应用,我们下载[儿童生长发育分析](https://github.com/smart-on-fhir/growth-chart-app)的应用,虽然简单,但它很有代表性,也是波士顿儿童医院的杰作。它支持DSTU2和STU3的FHIR版本,不过因为它用的FHIR资源类型不多,因此实际上也支持FHIR R4。 将代码下载到本地后,解压并保存在您上一篇创建的InterSystems IRIS FHIR服务器上,建议您创建一个名为SMART的目录,存放解压后的SMART 代码。 之后,请记得打开命令行,在这个目录下执行: npm install 它会下载需要的一系列文件到node_modules子目录下。 执行完这一步,您已经有一个完整的SMART on FHIR应用了。 ### 2. 修改SMART on FHIR 要连接到我们上一篇创建的FHIR服务器,需要对应用的代码做一点点修改。需要修改的是launch.html文件,它负责OAuth认证并重定向到index.html。 找到您的launch.html文件,用任何文本编辑工具打开它:
<html lang="en">
  
  </span>Loading...</body>
</html></pre>


找到FHIR.oauth2.authorize,我把原来的代码注释起来,用于比对。这里我们做了这些修改:

1. 增加fhirServiceUrl,用于指向FHIR服务器端点。增加它的原因是我们想在这篇文章中,跳过OAuth认证。请修改这个URL指向您的FHIR服务器端点。

2. 增加patientId,用于指定我们想打开的FHIR患者资源。增加它的原因是,我们不是通过其它应用打开这个SMART on FHIR,没有选中的患者上下文,因此我们在这里指定一个患者资源。请找一个您的FHIR资源仓库中,有身高、体重等信息的儿童患者资源,用它的FHIR资源id替换。上一篇中有介绍怎么使用API查找这样的患者。

3. 增加redirectUri,用于重定向页面。这里直接重定向到index.html。

如果您是开发者,FHIR.oauth2.authorize的API的文档在此,供参考。

 

3. 部署SMART on FHIR应用

将这个SMART on FHIR应用部署到Web服务器上。如果您的环境上没有安装Web服务器,可以使用InterSystems IRIS的私有Apache进行测试。

InterSystems IRIS安装时,会自动安装一个私有的Apache,用于提供管理门户的Web应用。这个私有Apache因为性能原因,不应作为提供外部服务的Web服务器,不过用于我们这次的测试是没有问题的。

在InterSystems IRIS的私有Apache上部署SMART on FHIR应用非常简单:

3.1 创建一个Web应用

打开InterSystems IRIS管理门户网页(http://<IRIS服务器地址>:<Web服务端口>/csp/sys/UtilHome.csp,例如http://localhost:52776/csp/sys/UtilHome.csp),然后在“系统管理>安全>应用程序>Web应用程序"中,点击"新建Web应用程序":

在名称中创建一个新的Web应用,例如/csp/gc;

在命名空间中,选则上一篇创建的FHIRSERVER,或者任何其它的命名空间,如USER;

选中启用“CSP/ZEN”;

“CSP文件设置>物理路径”中,选择您下载并解压的SMART on FHIR应用的路径。

其它默认值无需更改,点击保存按钮。

现在您已经部署成功了SMART on FHIR。

3.2 测试SMART on FHIR

您可以直接打开浏览器,输入网址http://<IRIS服务器地址>:<Web服务端口>/csp/gc/launch.html(用您的环境的IRIS服务器IP和端口号)。应该看到和下面类似的页面,它已经自动重定向到了index.html:

 

这是一个非常直观的FHIR数据可视化的应用,显示了儿童的生长发育曲线。您还可以下载并部署其它SMART on FHIR应用,用于学习或测试。

</html>