在启动板之外的FHIR应用上启动智能

时间:2019-10-11 11:52:05

标签: javascript html hl7-fhir

要求:在不使用任何启动板的情况下单击按钮时,可以从自定义网站中打开FHIR应用程序上的smart。

在按钮单击事件上,我尝试调用启动网址,例如“ https://localhost:44309/launch?launch=xyz123&iss=https://open-ic.epic.com/Argonaut/api/FHIR/Argonaut”。但是我收到一条错误消息,提示“错误= invalid_grant&error_description =无效+启动+令牌和状态= 45373359” 。是在不使用LaunchPad的情况下在FHIR应用程序上启动智能的正确方法吗?还是有任何方法?请咨询

2 个答案:

答案 0 :(得分:0)

  

用户从EHR外部选择应用程序,例如通过点击   手机主屏幕(或您的网站)上的应用图标。该应用将从其启动   没有启动ID的注册URL。

在您的情况下,这将从您的网站启动应用程序,并且您可以生成启动参数值。在此示例中,xyz123

https://app/launch?iss=https%3A%2F%2Fehr%2Ffhir&launch=xyz123
  

为了获得启动上下文并请求访问权限   FHIR资源,该应用会发现EHR授权服务器的OAuth   通过查询端点URL来授权和标记端点URL   .well-known / smart-configuration.json文件。

这时,您的应用程序应捕获iss和启动URL参数,然后将获取FHIR服务器的一致性声明,通常是iss URL参数中提供的FHIR端点的末尾的/ metadata。

https://ehr/fhir/metadata
  

然后,该应用可以通过添加以下内容来声明其启动上下文要求:   发送给EHR授权的请求的特定范围   服务器。授权端点将获取应用程序所需的上下文   并使其可用。

在这里,您将使用/ metadata一致性声明以及required parameters中提供的授权端点来请求代码。

  

https://ehr/authorize?response_type=code&client_id=app-client-id&redirect_uri=https%3A%2F%2Fapp%2Fafter-auth&launch=xyz123&scope=launch+patient%2FObservation.read+patient%2FPatient.read+openid+fhirUser&state=98wrghuwuogerg97&aud=https://ehr/fhir

在调用授权端点时,我遇到了FHIR服务器,该服务器提供患者查找屏幕,以便用户在范围请求患者访问时选择患者。

现在,您将需要使用返回到重定向URI的代码向/ metadata一致性语句中提供的令牌端点发送请求,以检索访问令牌,该令牌将用于验证任何后续的FHIR端点调用。

  

https://ehr/token?grant_type=authorization_code&code=123abc&redirect_uri=https%3A%2F%2Fapp%2Fafter-auth

此处的响应将包含访问代码

{
  "access_token": "i8hweunweunweofiwweoijewiwe",
  "token_type": "bearer",
  "expires_in": 3600,
  "scope": "patient/Observation.read patient/Patient.read",
  "intent": "client-ui-name",
  "patient":  "123",
  "encounter": "456"
}

以上引用和示例摘自SMART App Launch Framework on HL7.org website

答案 1 :(得分:0)

您想要做的是独立启动,但是您将其与EHR Launch混淆了。

从网站启动SMART应用时,您无需提供isslaunch查询参数。

使用独立启动流程的应用目前没有启动ID。这些应用程序可以通过在授权请求中添加特定范围来声明启动上下文要求:例如,启动/患者表明该应用程序需要患者ID,或启动/遇到表明其需要遭遇。 EHR的“授权”端点将负责获取所需的上下文(将其提供给应用程序)。 例如,如果您的应用需要患者背景,则EHR可以为最终用户提供患者选择窗口小部件。

您可以参考Standalone Launch Sequence.