Visão geral do SMART on FHIR

Aplicativos Médicos Substituíveis e Tecnologias Reutilizáveis (SMART on FHIR) é um padrão de saúde por meio do qual os aplicativos podem acessar informações clínicas por meio de um armazenamento de dados. Ele adiciona uma camada de segurança com base em padrões abertos, incluindo OAuth2 e OpenID Connect, a interfaces FHIR para habilitar a integração com sistemas EHR. O uso do SMART no FHIR oferece pelo menos três benefícios importantes:

  • Os aplicativos têm um método conhecido para obter autenticação/autorização para um repositório FHIR.
  • Os usuários que acessam um repositório FHIR com SMART no FHIR são restritos a recursos associados ao usuário, em vez de ter acesso a todos os dados no repositório.
  • Os usuários têm a capacidade de conceder aos aplicativos acesso a um conjunto limitado adicional de seus dados usando escopos clínicos SMART.

Os tutoriais abaixo descrevem as etapas para habilitar o SMART em aplicativos FHIR com o Serviço FHIR.

Pré-requisitos

SMART no FHIR usando OSS de exemplos AHDS (SMART no FHIR(Avançado))

Etapa 1: Configurar a função de usuário FHIR SMART

Siga as etapas listadas na seção Gerenciar Usuários: Atribuir Usuários à Função. Qualquer usuário adicionado à função – "FHIR SMART User" poderá acessar o Serviço FHIR se suas solicitações estiverem em conformidade com o Guia de implementação smart on FHIR, como solicitação com token de acesso, que inclui uma declaração fhirUser e uma declaração de escopos clínicos. O acesso concedido aos usuários nessa função será limitado pelos recursos associados ao compartimento fhirUser e às restrições nos escopos clínicos.

Etapa 2: integração do servidor FHIR com exemplos

Siga as etapas em OSS de Exemplos do Serviço de Dados de Integridade do Azure. Isso habilitará a integração do servidor FHIR com outros Serviços do Azure (como APIM, funções do Azure e muito mais).

Observação

Os exemplos são código de código aberto e você deve examinar as informações e os termos de licenciamento no GitHub antes de usá-lo. Eles não fazem parte do Serviço de Dados de Integridade do Azure e não são compatíveis com Suporte da Microsoft. Esses exemplos podem ser usados para demonstrar como os Serviços de Dados de Integridade do Azure e outras ferramentas de software livre podem ser usados juntos para demonstrar a conformidade do ONC (g)(10), usando o Azure Active Directory como o fluxo de trabalho do provedor de identidade.

PROXY SMART no FHIR

Clique para expandir!

Observação

Essa é outra opção para SMART no FHIR(Avançado) mencionado acima. A opção SMART on FHIR Proxy habilita apenas a sequência de inicialização do EHR.

Para usar o SMART no FHIR, primeiro você deve autenticar e autorizar o aplicativo. Na primeira vez que você usar o SMART no FHIR, também deverá obter consentimento administrativo para permitir que o aplicativo acesse seus recursos FHIR.

Se você não tiver uma função de propriedade no aplicativo, entre em contato com o proprietário do aplicativo e solicite que ele conceda consentimento de administrador para você no aplicativo.

Se você tiver privilégios administrativos, conclua as etapas a seguir para conceder o consentimento do administrador diretamente. (Você também pode conceder o consentimento do administrador para si mesmo mais tarde quando for solicitado no aplicativo.) Você pode concluir as mesmas etapas para adicionar outros usuários como proprietários, para que eles possam exibir e editar esse registro de aplicativo.

Para adicionar você ou outro usuário como proprietário de um aplicativo:

  1. No portal do Azure, acesse o Azure Active Directory.
  2. No menu à esquerda, selecione Registro de Aplicativo.
  3. Pesquise o registro do aplicativo que você criou e selecione-o.
  4. No menu à esquerda, em Gerenciar, selecione Proprietários.
  5. Selecione Adicionar proprietários e adicione a si mesmo ou ao usuário que você deseja ter o consentimento do administrador.
  6. Selecione Salvar

Etapa 2: Habilitar o proxy SMART no FHIR

O SMART on FHIR requer que Audience tenha um URI de identificador igual ao URI do serviço FHIR. A configuração padrão da API do Azure para FHIR usa um valor Audience de https://azurehealthcareapis.com. No entanto, você também pode definir um valor correspondente à URL específica do serviço FHIR (por exemplo https://MYFHIRAPI.azurehealthcareapis.com). Isso é necessário ao trabalhar com o proxy do SMART on FHIR.

Para habilitar o proxy SMART on FHIR nas configurações de autenticação da instância da API do Azure para FHIR, selecione a caixa smart no proxy FHIR marcar:

A captura de tela mostra a habilitação do proxy SMART no FHIR.

O proxy do SMART on FHIR atua como um intermediário entre o aplicativo SMART on FHIR e o Azure AD. A resposta de autenticação (o código de autenticação) deve ir para o proxy do SMART on FHIR, em vez do próprio aplicativo. O proxy então encaminha a resposta para o aplicativo.

Devido a essa retransmissão de duas etapas do código de autenticação, você precisa definir a URL de resposta (retorno de chamada) para seu aplicativo cliente do Azure AD para uma URL que seja uma combinação da URL de resposta para o proxy do SMART on FHIR e a URL de resposta para o aplicativo SMART on FHIR. A URL de resposta combinada tem este formato:

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

Nessa resposta, aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA é uma versão segura de URL, codificada em base64 da URL de resposta para o aplicativo SMART on FHIR. Para o inicializador de aplicativos SMART on FHIR, quando o aplicativo está em execução localmente, a URL de resposta é https://localhost:5001/sampleapp/index.html.

Você pode gerar a URL de resposta combinada usando um 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

Adicione a URL de resposta ao aplicativo cliente público que você criou anteriormente para o Azure AD:

Captura de tela que mostra como a URL de resposta pode ser configurada para o cliente público.

Etapa 3: Obter um paciente de teste

Para testar a API do Azure para FHIR e o proxy do SMART on FHIR, você precisará ter pelo menos um paciente no banco de dados. Se você ainda não interagiu com a API e não tem dados no banco de dados, confira Acessar o serviço FHIR usando o Postman para carregar um paciente. Anote a ID de um paciente específico.

Etapa 4: Baixar o inicializador de aplicativos SMART no FHIR

O servidor FHIR para o repositório do Azure de software livre inclui um inicializador de aplicativos SMART on FHIR simples e um aplicativo de exemplo SMART on FHIR. Neste tutorial, use esse iniciador do SMART on FHIR localmente para testar a instalação.

Você pode clonar o repositório do GitHub e ir para o aplicativo usando estes comandos:

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

O aplicativo precisa de algumas definições de configuração, que podem ser feitas em appsettings.json:

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

Recomendamos o uso do recurso dotnet user-secrets:

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

Use este comando para executar o aplicativo:

dotnet run

Etapa 5: Testar o SMART no proxy FHIR

Depois de iniciar o inicializador de aplicativos SMART on FHIR, você pode apontar seu navegador para https://localhost:5001, em que deverá ver a tela a seguir:

Captura de tela do inicializador de aplicativos SMART no FHIR.

Ao inserir informações de Paciente, Encontrado ou Profissional, você observará que o Contexto de inicialização é atualizado. Quando você está usando a API do Azure para FHIR, o contexto de inicialização é simplesmente um documento JSON que contém informações sobre pacientes, profissionais e muito mais. Esse contexto de inicialização é codificado em Base64 e passado para o aplicativo SMART on FHIR como o parâmetro de consulta launch. De acordo com a especificação do SMART on FHIR, essa variável é opaca para o aplicativo SMART on FHIR e passada para o provedor de identidade.

O proxy do SMART on FHIR usa essas informações para preencher campos na resposta do token. O aplicativo SMART on FHIR pode usar esses campos para controlar para qual paciente ele solicita dados e como ele renderiza o aplicativo na tela. O proxy do SMART on FHIR dá suporte aos seguintes campos:

  • patient
  • encounter
  • practitioner
  • need_patient_banner
  • smart_style_url

Esses campos destinam-se a fornecer orientação para o aplicativo, mas não transmitem nenhuma informação de segurança. Um aplicativo SMART on FHIR pode ignorá-los.

Observe que o inicializador de aplicativos SMART on FHIR atualiza as informações da URL de inicialização na parte inferior da página. Selecione Iniciar para iniciar o aplicativo de exemplo.

## Próximas etapas

Agora que você aprendeu a habilitar a funcionalidade SMART on FHIR, consulte a página de exemplos de pesquisa para obter detalhes sobre como pesquisar usando parâmetros de pesquisa, modificadores e outros métodos de pesquisa FHIR.

FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.