As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
SMART em escopos FHIR OAuth 2.0 suportados por HealthLake
HealthLake usa o OAuth 2.0 como protocolo de autorização. O uso desse protocolo em seu servidor de autorização permite definir permissões de armazenamento de HealthLake dados (criar, ler, atualizar, excluir e pesquisar) para recursos FHIR aos quais um aplicativo cliente tem acesso.
A estrutura SMART on FHIR define um conjunto de escopos que podem ser solicitados do servidor de autorização. Por exemplo, um aplicativo cliente projetado apenas para permitir que os pacientes visualizem seus resultados laboratoriais ou visualizem seus detalhes de contato só deve ser autorizado a solicitar read escopos.
nota
HealthLake fornece suporte para SMART no FHIR V1 e V2, conforme descrito abaixo. O SMART no FHIR AuthorizationStrategyé definido para um dos três valores a seguir quando seu armazenamento de dados é criado:
-
SMART_ON_FHIR_V1— Support somente para SMART no FHIR V1, que inclui permissõesread(read/search) ewrite(create/update/delete). -
SMART_ON_FHIR— Support para SMART no FHIR V1 e V2, que inclui,create,readupdate,deletee permissões.search -
AWS_AUTH— A estratégia de AWS HealthLake autorização padrão; não afiliada à SMART no FHIR.
Escopo de lançamento independente
HealthLake suporta o escopo launch/patient do modo de inicialização autônomo.
No modo de inicialização autônomo, um aplicativo cliente solicita acesso aos dados clínicos do paciente porque o usuário e o paciente não são conhecidos pelo aplicativo cliente. Assim, a solicitação de autorização do aplicativo do cliente solicita explicitamente que o escopo do paciente seja devolvido. Após a autenticação bem-sucedida, o servidor de autorização emite um token de acesso contendo o escopo do paciente de lançamento solicitado. O contexto necessário do paciente é fornecido junto com o token de acesso na resposta do servidor de autorização.
| Escopo | Description |
|---|---|
|
Um parâmetro em uma solicitação de autorização do OAuth 2.0 solicitando que os dados do paciente sejam retornados na resposta de autorização. |
SMART nos escopos de recursos do FHIR para HealthLake
HealthLake define três níveis de SMART nos escopos de recursos do FHIR.
-
patientos escopos concedem acesso a dados específicos sobre um único paciente. -
useros escopos concedem acesso a dados específicos que um usuário pode acessar. -
systemos escopos concedem acesso a todos os recursos do FHIR encontrados no armazenamento de dados. HealthLake
As seções a seguir listam a sintaxe para construir escopos de recursos FHIR usando SMART no FHIR V1 ou SMART no FHIR V2.
nota
A estratégia de autorização SMART on FHIR é definida quando seu armazenamento de dados é criado. Para obter mais informações, consulte AuthorizationStrategy na Referência de APIs do AWS HealthLake .
SMART em escopos FHIR V1 suportados por HealthLake
Ao usar o SMART no FHIR V1, a sintaxe geral para construir escopos de recursos do FHIR é a seguinte. HealthLake Para ver todo o caminho do URL no exemplo a seguir, role até o botão Copiar.
('patient' | 'user' | 'system') '/' (fhir-resource | '*') '.' ('read' | 'write' | '*')
| Sintaxe do escopo | Exemplo de escopo | Resultado |
|---|---|---|
|
patient/AllergyIntolerance.* |
O aplicativo cliente do paciente tem read/write acesso em nível de instância a todas as alergias registradas. |
|
user/Observation.read |
O aplicativo cliente do usuário tem read/write acesso em nível de instância a todas as observações registradas. |
system/('read' | 'write' | *) |
system/*.* |
O aplicativo cliente do sistema tem read/write acesso a todos os dados de recursos do FHIR. |
SMART em escopos FHIR V2 suportados por HealthLake
Ao usar o SMART no FHIR V2, a sintaxe geral para construir escopos de recursos do FHIR é a seguinte. HealthLake Para ver todo o caminho do URL no exemplo a seguir, role até o botão Copiar.
('patient' | 'user' | 'system') '/' (fhir-resource | '*') '.' ('c' | 'r' | 'u' | 'd' | 's')
nota
Para usar o SMART no FHIR V2, você deve passar o valor permission-v2capabilities string de metadados, que é um membro do tipo de dados. IdentityProviderConfiguration
HealthLake suporta escopos granulares. Para obter mais informações, consulte os escopos granulares compatíveis
| Sintaxe do escopo | Exemplo de escopo V1 | Resultado |
|---|---|---|
|
user/Observation.read |
Permissão para ler e pesquisar Observation recursos para o paciente atual. |
|
system/*.* |
O aplicativo cliente do sistema tem acesso completo create/read update/delete //search a todos os dados de recursos do FHIR. |
SMART em V2.2 escopos FHIR suportados por HealthLake
V2.2 estende os escopos da V2 com filtragem baseada em parâmetros de pesquisa. Agora, os servidores de autorização podem emitir escopos que restringem o acesso por características de dados específicas e não apenas por tipo de recurso e operação CRUDS.
Tudo da V2 permanece inalterado. V2.2 é puramente aditivo:
-
Os escopos V2 existentes (sem filtros) continuam funcionando como antes.
-
A gramática V2 é estendida com uma string de
?param=valueconsulta opcional. -
Nenhuma alteração nos níveis de escopo (
patient/user/system), nos tipos de recursos ou nas letras CRUDS.
Pré-requisitos
Antes de ativar o SMART no FHIR V2.2, verifique o seguinte:
-
Seu armazenamento de dados foi criado com
AuthorizationStrategyset toSMART_ON_FHIR(suporta V1 e V2). Armazenamentos de dados que usamSMART_ON_FHIR_V1ou nãoAWS_AUTHsão elegíveis. -
Seu armazenamento de dados já está incluído
permission-v2nacapabilitiesmatriz. V2.2 é aditivo, pois estende a V2 e não pode ser usado de forma independente. -
Seu IDP Lambda está configurado para validar e passar pelo formato V2.2 do escopo (escopos
?contendo sintaxe de consulta).
Habilitando V2.2
O caminho de habilitação depende se você está criando um novo armazenamento de dados ou atualizando um existente.
Novos armazenamentos de dados
Ao criar um novo armazenamento de dados, adicione permission-v2.2 à capabilities matriz no Metadata campo do seu IdentityProviderConfiguration:
"capabilities": [ "launch-ehr", "sso-openid-connect", "client-public", "permission-v2", "permission-v2.2" ]
Armazenamentos de dados existentes
Para habilitar o SMART V2.2 no FHIR em um armazenamento de dados existente, adicione permission-v2.2 à capabilities matriz no Metadata campo seu IdentityProviderConfiguratione envie a alteração com. UpdateFHIRDatastore Para obter mais informações, consulte Atualizando um armazenamento HealthLake de dados.
Requisitos:
-
permission-v2deve permanecer na matriz. V2.2 estende a V2 e não pode ser usado sozinho. -
AuthorizationStrategydeve serSMART_ON_FHIR(nãoSMART_ON_FHIR_V1ouAWS_AUTH). -
A atualização da configuração do provedor de identidade a substitui totalmente, portanto, inclua todos os campos e recursos existentes.
permission-v2.2
A alteração entra em vigor imediatamente, sem tempo de inatividade. Para verificar, busque o Documento de descoberta (requer SigV4):
GET {healthlake-endpoint}/r4/.well-known/smart-configuration
Se a capabilities matriz na resposta incluirpermission-v2.2, o SMART no FHIR estará V2.2 ativo.
Sintaxe de escopo estendido
A gramática V2 é estendida com uma string de consulta opcional:
V2: (patient|user|system) / resource . cruds V2.2: (patient|user|system) / resource . cruds [? param=value [& param=value ...]]
| Componente | Description |
|---|---|
|
Search-parameter filtrar. Somente os recursos que correspondem a esse critério estão acessíveis. |
|
Filtro adicional. Vários filtros são e Ed — todos devem corresponder. |
Regras:
-
Os filtros se aplicam somente ao tipo de recurso especificado no escopo. Não há suporte para Wildcard (
*) com filtros. -
Os parâmetros devem ser válidos para o tipo de recurso de acordo com a configuração de pesquisa do seu armazenamento de dados (verifique via
GET /r4/metadata). -
A string de escopo completo (por exemplo,
patient/Observation.rs?category=laboratory) é o valor literal que aparece no parâmetro de escopo do OAuth 2.0 e na declaração do token de acesso.scp -
URL-encode caracteres especiais de acordo com RFC 6749
em solicitações de autorização (por exemplo, |→%7C). -
Para parâmetros de data, número e quantidade, V2.2 suporta comparadores de prefixo (por exemplo,
?date=eq2023-01-01). V2.2 também suporta modificadores de parâmetros de pesquisa.
Exemplos de escopo
| Escopo | Acesso concedido |
|---|---|
|
Somente |
|
Somente |
|
Somente |
|
Somente |
|
Somente |
Comportamento de aplicação
Quando um token inclui V2.2 escopos, HealthLake aplica filtros por operação:
| Operation | Comportamento |
|---|---|
Leia ( |
Só será bem-sucedido se o recurso corresponder a todos os filtros de escopo. Caso contrário, retorna 403. |
Pesquisar ( |
Os filtros de escopo são cruzados com a consulta. Somente os recursos correspondentes são retornados. |
Create/Update ( |
O recurso deve satisfazer os filtros de escopo para ser escrito. Caso contrário, retorna 403. |
Excluir ( |
O recurso de destino deve corresponder aos filtros de escopo. Caso contrário, retorna 403. |
Precedência do escopo
-
Vários V2.2 escopos para o mesmo tipo de recurso são unidos (OU entre escopos).
-
Um escopo V2 mais amplo sem filtros (por exemplo,
patient/Observation.rs) concede acesso total, independentemente de qualquer V2.2 escopo mais estreito no mesmo token. -
V2.2 os escopos em um armazenamento de dados sem
permission-v2.2habilitado são ignorados silenciosamente.
Limitações
Os itens a seguir não são compatíveis com filtros de V2.2 escopo:
-
Parâmetros de pesquisa compostos (por exemplo,
code-value-quantity). -
Parâmetros de pesquisa encadeados (por exemplo,
subject:Patient.name=Smith). -
_include/parâmetros_revincludede pesquisa. -
$export/$davinci-data-export(Dados em massa) — V2.2 os filtros não se aplicam; a exportação em massa usa escopos V2. -
Tipo de recurso curinga combinado com filtros (por exemplo,
patient/*.rs?category=LABé inválido). Você deve especificar um tipo de recurso explícito ao usar filtros de parâmetros de pesquisa (por exemplo,).patient/Observation.rs?category=LAB
| Sintomas | Causa | Correção |
|---|---|---|
Escopo do token não reconhecido |
V2.2 não habilitado no armazenamento de dados |
Verifique |
403 em um recurso que existe |
O recurso não corresponde ao filtro de escopo |
Verifique os valores dos recursos em relação aos parâmetros do escopo. |
Resultados de pesquisa vazios |
Filtro de escopo mais estreito que a consulta |
Os resultados são a interseção dos filtros de consulta e escopo. |
Erro |
Parâmetro de pesquisa inválido no escopo |
Confirme o parâmetro via |
End-to-end exemplo
Cenário: um aplicativo para pacientes só deve mostrar os resultados laboratoriais finalizados a partir de 2023.
-
O servidor de autorização emite um token com o escopo:
patient/Observation.rs?category=laboratory&status=final&date=ge2023-01-01 -
Chamadas do cliente HealthLake:
GET {endpoint}/r4/Observation?patient=Patient/123 -
HealthLake impõe filtros de escopo. A resposta contém somente
Observationrecursos ondecategory=laboratoryANDstatus=finalANDdate ≥ 2023-01-01— mesmo que o cliente tenha solicitado todas as observações.