Introducción a SMART on FHIR

Las aplicaciones médicas sustituibles y las tecnologías reutilizables (SMART on FHIR) son un estándar sanitario a través del cual las aplicaciones pueden acceder a la información clínica a través de un almacén de datos. Agrega una capa de seguridad basada en estándares abiertos, como OAuth2 y OpenID Connect, a interfaces de FHIR para habilitar la integración con sistemas EHR. El uso de SMART on FHIR proporciona al menos tres ventajas importantes:

  • Las aplicaciones tienen un método conocido para obtener la autenticación y autorización en un repositorio de FHIR.
  • Los usuarios que acceden a un repositorio de FHIR con SMART on FHIR están restringidos a los recursos asociados al usuario, en lugar de tener acceso a todos los datos del repositorio.
  • Los usuarios tienen la capacidad de conceder a las aplicaciones acceso a un conjunto limitado adicional de sus datos mediante ámbitos clínicos SMART.

En los tutoriales siguientes se describen los pasos para habilitar las aplicaciones SMART on FHIR con el servicio FHIR.

Requisitos previos

SMART on FHIR con AHDS Samples OSS (SMART on FHIR(Enhanced))

Paso 1: Configurar el rol de usuario SMART de FHIR

Siga los pasos que aparecen en la sección Administrar usuarios: Asignar usuarios al rol. Cualquier usuario agregado al rol : "FHIR SMART User" podrá acceder al servicio FHIR si sus solicitudes cumplen con la Guía de implementación de SMART on FHIR, como la solicitud con token de acceso, que incluye una notificación fhirUser y una notificación de ámbitos clínicos. A continuación, el acceso concedido a los usuarios de este rol estará limitado por los recursos asociados a su compartimiento fhirUser y las restricciones en los ámbitos clínicos.

Paso 2: Integración del servidor de FHIR con ejemplos

Siga los pasos descritos en Ejemplos del servicio de datos de Azure Health. Esto habilitará la integración del servidor FHIR con otros servicios de Azure (como APIM, Azure Functions y mucho más).

Nota:

Los ejemplos son código abierto y debe revisar la información y los términos de licencia en GitHub antes de usarlo. No forman parte de Azure Health Data Service y no son compatibles con Soporte técnico de Microsoft. Estos ejemplos se pueden usar para demostrar cómo azure Health Data Services y otras herramientas de código abierto se pueden usar conjuntamente para demostrar el cumplimiento de ONC (g)(10), mediante Azure Active Directory como flujo de trabajo del proveedor de identidades.

Proxy smart on FHIR

Haga clic para expandirlo.

Nota

Esta es otra opción para SMART on FHIR(Enhanced) mencionada anteriormente. La opción SMART on FHIR Proxy solo habilita la secuencia de inicio de EHR.

Para usar SMART on FHIR, primero debe autenticar y autorizar la aplicación. La primera vez que use SMART on FHIR, también debe obtener el consentimiento administrativo para permitir que la aplicación acceda a los recursos de FHIR.

Si no tiene un rol de propiedad en la aplicación, póngase en contacto con el propietario de la aplicación y pídale que conceda su consentimiento de administrador en la aplicación.

Si tiene privilegios administrativos, complete los pasos siguientes para conceder el consentimiento del administrador directamente. (También puede conceder el consentimiento del administrador más adelante cuando se le solicite en la aplicación). Puede completar los mismos pasos para agregar otros usuarios como propietarios, para que puedan ver y editar este registro de la aplicación.

Para agregarse a sí mismo u otro usuario como propietario de una aplicación:

  1. En Azure Portal, vaya a Azure Active Directory.
  2. En el menú de la izquierda, seleccione Registro de aplicaciones.
  3. Busque el registro de la aplicación que creó y selecciónelo.
  4. En el menú izquierdo, en Administrar, seleccione Propietarios.
  5. Seleccione Agregar propietarios y, a continuación, agréguese o el usuario que quiera tener el consentimiento del administrador.
  6. Seleccione Guardar.

Paso 2: Habilitar el proxy SMART on FHIR

SMART on FHIR requiere que Audience tenga un URI de identificador igual al URI del servicio FHIR. La configuración estándar de Azure API for FHIR usa un valor Audience de https://azurehealthcareapis.com. De todas formas, también puede establecer un valor que coincida con la dirección URL específica de su servicio de FHIR (por ejemplo https://MYFHIRAPI.azurehealthcareapis.com). Esto es necesario cuando se trabaja con el proxy de SMART on FHIR.

Para habilitar el proxy smart on FHIR en la configuración de autenticación de la instancia de Azure API for FHIR, active la casilla SMART on FHIR proxy (Proxy smart on FHIR ):

Captura de pantalla que muestra cómo habilitar el proxy SMART on FHIR.

El proxy de SMART on FHIR actúa como intermediario entre la aplicación SMART on FHIR y Azure AD. La respuesta de autenticación (el código de autenticación) tiene que ir al proxy de SMART on FHIR en lugar de a la propia aplicación. Después, el proxy reenvía la respuesta a la aplicación.

Debido a esta retransmisión en dos pasos del código de autenticación, tiene que establecer la dirección URL de respuesta (devolución de llamada) para su aplicación cliente de Azure AD en una dirección URL que es una combinación de la dirección URL de respuesta para el proxy de SMART on FHIR y la dirección URL de respuesta de la aplicación SMART on FHIR. La dirección URL de respuesta combinada tiene este formato:

https://MYFHIRAPI.azurehealthcareapis.com/AadSmartOnFhirProxy/callback/aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA

En esa respuesta, aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA es una versión codificada en Base64 y segura para direcciones URL de la dirección URL de respuesta para la aplicación SMART on FHIR. En el iniciador de aplicaciones SMART on FHIR, cuando la aplicación se ejecuta localmente, la dirección URL de respuesta es https://localhost:5001/sampleapp/index.html.

Puede generar la dirección URL de respuesta combinada mediante un script como este:

$replyUrl = "https://localhost:5001/sampleapp/index.html"
$fhirServerUrl = "https://MYFHIRAPI.azurewebsites.net"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($ReplyUrl)
$encodedText = [Convert]::ToBase64String($bytes)
$encodedText = $encodedText.TrimEnd('=');
$encodedText = $encodedText.Replace('/','_');
$encodedText = $encodedText.Replace('+','-');

$newReplyUrl = $FhirServerUrl.TrimEnd('/') + "/AadSmartOnFhirProxy/callback/" + $encodedText

Agregue la dirección URL de respuesta a la aplicación cliente pública que creó anteriormente para Azure AD:

Captura de pantalla que muestra cómo se puede configurar la dirección URL de respuesta para el cliente público.

Paso 3: Obtener un paciente de prueba

Para probar Azure API for FHIR y el proxy de SMART on FHIR, tiene que tener al menos un paciente en la base de datos. Si aún no ha interactuado con la API y no tiene datos en la base de datos, consulte Acceso al servicio FHIR mediante Postman para cargar un paciente. Anote el identificador de un paciente específico.

Paso 4: Descargar el iniciador de aplicaciones SMART on FHIR

El repositorio de FHIR Server para Azure incluye un sencillo iniciador de aplicaciones SMART on FHIR y un ejemplo de aplicación SMART on FHIR. En este tutorial, use este iniciador de SMART on FHIR de forma local para probar la instalación.

Puede clonar el repositorio de GitHub e ir a la aplicación mediante estos comandos:

git clone https://github.com/Microsoft/fhir-server
cd fhir-server/samples/apps/SmartLauncher

La aplicación necesita algunos valores de configuración, que se pueden establecer en appsettings.json:

{
    "FhirServerUrl": "https://MYFHIRAPI.azurehealthcareapis.com",
    "ClientId": "APP-ID",
    "DefaultSmartAppUrl": "/sampleapp/launch.html"
}

Se recomienda utilizar la característica dotnet user-secrets:

dotnet user-secrets set FhirServerUrl https://MYFHIRAPI.azurehealthcareapis.com
dotnet user-secrets set ClientId <APP-ID>

Use este comando para ejecutar la aplicación:

dotnet run

Paso 5: Probar el proxy smart on FHIR

Después de iniciar el iniciador de aplicaciones de SMART on FHIR, puede dirigir el explorador a https://localhost:5001, donde debería ver la siguiente pantalla:

Captura de pantalla del iniciador de aplicaciones SMART on FHIR.

Cuando escribe la información de los campos Patient (Paciente), Encounter (Encuentro) o Practitioner (Personal sanitario), notará que Launch context (Contexto de inicio) se actualiza. Cuando se usa Azure API for FHIR, el contexto de inicio es simplemente un documento JSON que contiene información sobre el paciente, el personal sanitario, etc. Este contexto de inicio está codificado en Base64 y se pasa a la aplicación SMART on FHIR como parámetro de consulta launch. Según la especificación de SMART on FHIR, esta variable es opaca para la aplicación SMART on FHIR, y se pasa al proveedor de identidades.

El proxy de SMART on FHIR usa esta información para rellenar los campos en la respuesta del token. La aplicación SMART on FHIR puede usar estos campos para controlar de qué paciente solicita los datos y cómo representa la aplicación en la pantalla. El proxy de SMART on FHIR admite los siguientes campos:

  • patient
  • encounter
  • practitioner
  • need_patient_banner
  • smart_style_url

Estos campos están diseñados para proporcionar orientación a la aplicación, pero no proporcionan ninguna información de seguridad. Una aplicación SMART on FHIR puede omitirlos.

Observe que el iniciador de aplicaciones de SMART on FHIR actualiza la información del campo Launch URL (Dirección URL de inicio) al final de la página. Seleccione Iniciar para iniciar la aplicación de ejemplo.

Pasos siguientes

Ahora que ha aprendido a habilitar la funcionalidad smart on FHIR, consulte la página de ejemplos de búsqueda para obtener más información sobre cómo buscar mediante parámetros de búsqueda, modificadores y otros métodos de búsqueda de FHIR.

FHIR® es una marca registrada de HL7 y se usa con su permiso.