Artigo
· Set. 20 4min de leitura

Desenvolvendo SMART em aplicações FHIR com Auth0 e InterSystems IRIS FHIR Server - Aplicação Angular

Nós concluímos essa série de artigos SMART On FHIR com Auth0 e InterSystems FHIR Repository revisando nossa aplicação desenvolvida em Angular 16.

Vamos relembrar como foi definida a arquitetura da nossa solução:

Nossa aplicação front-end corresponde à segunda coluna e como você pode ver ela tem duas funções:

  1. Redirecionar a requisição de login para Auth0 e receber a resposta
  2. Enviar e receber a resposta de requisições via REST enviadas ao servidor FHIR

Angular

Angular é uma framework de aplicação web desenvolvida em TypeScript, código aberto, mantida pelo Google, usada para criar e manter aplicações web de página única. Esse design de "aplicação de página única" permite que façamos aplicações muito mais dinâmicas para o usuário. Como já explicamos no primeiro artigo, vamos usar NGINX como um servidor de  aplicação e proxy reverso que vai evitar problemas derivados de CORS ao modificar os cabeçalhos das chamadas para corresponder com os do servidor.

Design da aplicação

Nós fizemos o design da aplicação com Material Angular para simular o design de uma aplicação mobile. Em nosso exemplo, a aplicação tem a intenção de gravar uma série de dados de paciente como batimentos cardíacos, pressão sanguínea e peso, e para isso vamos enviar dois tipos de recursos FHIR ao servidor. O primeiro é do tipo paciente, com o qual o usuário vai registrar seus dados; o segundo corresponde ao recurso de observações no qual vamos mandar cada tipo de dado que vamos enviar.

A aplicação vai permitir que o usuário veja um gráfico com a evolução dos dados gravados.

Página de Login

Quando o usuário acessa a rota https://localhost, a página inicial será exibida, da qual ele pode requisitar um log in.

 

Ao clicar no botão de login, a aplicação vai automaticamente redirecionar o usuário à página Auth0 habilitada para a API configurada:

Após entrar com nosso usuário e senha, o Auth0 vai pedir permissão para a aplicação acessar nossos dados. Uma vez que o acesso aos dados seja confirmado, Auth0 vai redirecionar à URL que indicamos durante o processo de configuração. Uma vez que o Token de Acesso seja gerado, a livraria Auth0 será responsável por incluí-lo no cabeçalho de todas as chamadas que lançarmos sobre o servidor. Como podemos ver na seguinte imagem:

Tela inicial

Uma vez feito o log in, vamos ter a primeira comunicação com o servidor FHIR para requisitar a informação disponível ao usuário que entrou. Para isso vamos usar uma consulta por parâmetro enviando uma chamada GET do seguinte tipo:

https://localhost:8443/smart/fhir/r5/Patient?email=lperezra%40intersyste...

A resposta do servidor será um tipo Bundle de recurso com a seguinte informação:

{
    "resourceType":"Bundle",
    "id":"8c5b1efd-cfdd-11ee-a06b-0242ac190002",
    "type":"searchset",
    "timestamp":"2024-02-20T10:48:14Z",
    "total":0,
    "link":[
        {
            "relation":"self",
            "url":"https://localhost:8443/smart/fhir/r5/Patient?email=lperezra%40intersystems.com"
        }
    ]
}

Como vemos, temos um total de 0 paciente com esse email. Assim a nossa aplicação nos mostra uma tela inicial de onde poderemos registrar nossos dados.

 

Como você pode ver, temos o campo de email já preenchido com o email do usuário que entrou. Isso é porque, como você viu na consulta inicial, nós vamos usá-lo como um identificador. Com o formulário preenchido, vamos enviar uma chamada do seguinte tipo via POST:

https://localhost:8443/smart/fhir/r5/Patient

Com o corpo de mensagem formado por um recurso de Patient:

{
    "resourceType":"Patient",
    "birthDate":"1982-03-08",
    "gender":"male",
    "identifier":[
        {
            "type":{
                "text":"ID"
            },
            "value":"12345678A"
        }
    ],
    "name":[
        {
            "family":"PÉREZ RAMOS",
            "given":[
                "LUIS ÁNGEL"
                ]
        }
    ],
    "telecom":[
        {
            "system":"phone",
            "value":"600102030"
        },
        {
            "system":"email",
            "value":"lperezra@intersystems.com"
        }
    ]
}

Com os dados de Patient registrados no nosso servidor, a consulta de paciente irá agora retornar um resultado, então estamos preparados para gravar as diferentes observações. Vamos ver como se parece a tela inicial:

Tela de observações

Da mesma maneira que enviamos os dados dos pacientes, vamos enviar as observações desde suas telas específicas:

Para cada recurso enviado ao servidor, a aplicação vai adicionar um novo ponto ao gráfico:

Para isso, irá lançar uma query ao servidor requisitando recursos do tipo Observation que pertençam ao usuário:

https://localhost/smart/fhir/r5/Observation?patient=Patient/1

E o servidor vai novamente retornar um recurso do tipo Bundle com todas as observações gravadas para o paciente:

With the result obtained, the application will extract all the numerical values and construct the relevant graphs.

Conclusão

Como você viu nos dois artigos anteriores, o design e criação de aplicações SMART On FHIR não é muito complexo e permite que criemos de maneira rápida e ágil aplicações que aproveitam todas as funcionalidades disponíveis no nosso servidor FHIR.

Uma aplicação deste tipo não necessitará do desenvolvimento de um backend complexo para lidar com operações do tipo CRUD nos dados, e com o uso de OAuth2 não vamos precisar lidar com usuários da aplicação, delegando a funcionalidade ao Auth0 ou o servidor de autenticação e autorização escolhidos.

Com SMART On FHIR podemos, numa maneira fácil e simples, tornar disponível aos pacientes e profissionais médicos as ferramentas necessárias para a administração de dados clínicos.

Muito obrigado pela sua atenção!

Discussão (0)1
Entre ou crie uma conta para continuar