文章
· 四月 7, 2021 阅读大约需 5 分钟

在InterSystems IRIS医疗行业版的FHIR服务器上测试和开发SMART on FHIR应用

如果看了前一篇InterSystems IRIS医疗行业版创建FHIR服务器,应该您已经搭建好了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应用商店里已经有很多针对医生或者患者的应用可供免费下载和测试,初步实现了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应用商店里有很多不错的应用,我们下载儿童生长发育分析的应用,虽然简单,但它很有代表性,也是波士顿儿童医院的杰作。它支持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文件,用任何文本编辑工具打开它:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>Growth Chart SMART Application</title>
    <script src="node_modules/fhirclient/build/fhir-client.js"></script>
    <!--<script>
      FHIR.oauth2.authorize({
        "client_id": "growth_chart",
        "scope":  "patient/Observation.read patient/Patient.read offline_access",
        // "client_id": "944d96a0-4caf-4a96-813e-bc38aadb1169" // HSPC
        // "client_id": "5570f8be-6caf-4915-ae15-69545ab38e68" // Cerner
      });
    </script>-->
    <script>
      FHIR.oauth2.authorize({
        "client_id": "growth_chart",
        "scope":  "patient/*.read",
        "fhirServiceUrl": "http://localhost:52776/csp/healthshare/fhirserver/fhir/r4",
        "patientId": 95,
        "redirectUri":"index.html"
      });
    </script>
  </head>
  <body>Loading...</body>
</html>

找到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应用,用于学习或测试。

讨论 (2)1
登录或注册以继续