Artigo
· Nov. 22 6min de leitura

Usando o FHIR SQL Builder

O FHIR (Fast Healthcare Interoperability Resources) é o padrão mais utilizado pelo mercado para interoperar e armazenar dados em saúde. Trata-se de um padrão que mapeia dezenas de recursos de dados (Pacientes, Observações, Medicações, Diagnósticos, Alergias, Vacinas, Faturamento, Provedores de Saúde, Atendimentos, dentre outros) e seus relacionamentos (Medicações do Paciente, por exemplo). O acesso a todas estas estruturas de dados se dá pelo uso de APIs REST em formato JSON ou XML. A princípio, a maioria dos fornecedores de soluções FHIR, não disponibiliza acesso aos dados no formato SQL. Isto acontece, pois o FHIR foi projetado para as camadas de aplicação e interoperabilidade entre soluções clínicas. No entanto, por ser o principal repositório de dados das instituições em saúde, faz-se necessário construir análises, painéis de informação e relatórios sobre pacientes, faturamentos, consumo de materiais e tudo o mais que envolve o negócio de saúde utilizando, de preferência, conexões ODBC e JDBC em linguagem SQL, e não APIs REST em JSON.

Atualmente é necessário construir fluxos de extração, transformação e carga enormes a partir de APIs REST ou mesmo do acesso a modelos de dados proprietários e de alta complexidade, que exigem interpretar nomes de tabelas, de relacionamentos e de sua distribuição em diferentes schemas. A possibilidade de erros técnicos no mapeamento é grande, além da imprevisibilidade de custos e prazos. Para atender ao segmento analítico, a InterSystems desenvolveu um recurso maravilhoso chamado FHIR SQL Builder.  Os clientes que possuem o InterSystems IRIS for Health ou o HealthShare contam com esta fantástica ferramenta que de forma "no code" permite criar os mapeamentos de quaisquer recursos FHIR para o formato SQL, com os nomes de tabela que o cliente desejar. Rapidamente o cliente cria todas as consultas que precisa sem ETL, sem duplicação de dados e com os nomes de negócio para cada recurso de dados. Internamente, a InterSystems utiliza seu recurso de projeções SQL compiladas a partir dos recursos de dados do repositório. Enfim, é melhor ver a mágica acontecendo do que tentar explicar com palavras.

Este artigo irá apresentar passo a passo como:

  1. Instalar um repositório FHIR de exemplo utilizando o IRIS for Health no Docker.
  2. Configurar o ambiente do FHIR SQL Builder.
  3. Conectar o FHIR SQL Builder ao Repositório FHIR de exemplo.
  4. Criar especificações de transformações FHIR para SQL no formato "No Code" (nada de ETL!).
  5. Utilizar as especificações para criar as projeções em tabelas com os nomes que o pessoal de negócio escolheu.
  6. Consumir as projeções utilizando linguagem SQL.

Instalação de um repositório FHIR de exemplo

Vamos instalar um repositório FHIR de exemplo a partir do catálogo gratuito de aplicações da InterSystems, o Open Exchange. Siga os seguintes passos:

  1. Vá em https://openexchange.intersystems.com/package/iris-fhir-template e siga os procedimentos de instalação descritos.
  2. Se você já possui um IRIS for Health ativo, use o IPM: USER>zpm "install fhir-server"
  3. Se você não possui um IRIS for Health, obtenha um IRIS Community (apenas para fins de testes trial) com FHIR ativado usando Git e Docker:
    1. Clone o projeto de exemplo: git clone https://github.com/intersystems-community/iris-fhir-template.git 
    2. Vá ao diretório da aplicação e então execute: docker-compose up -d
  4. O artigo utilizou a opção Docker executado a partir do terminal do VSCode, que após alguns minutos apresenta o seguinte resultado:

 

Configuração do Ambiente

É hora de checar se o ambiente do FHIR SQL Builder está operacional. Siga estes passos:

  1. Vá no Portal de Administração: http://localhost:32783/csp/sys/UtilHome.csp?$NAMESPACE=FHIRSERVER. Usuário _SYSTEM e senha SYS.
  2. Vá em Administração do Sistema > Segurança > Aplicações > Aplicações Web > botão Ir.
  3. Clique em cada uma das aplicações a seguir e verifique se a opção Ativar Aplicativo está habilitada, caso não esteja, clique em Ativar Aplicativo e vá no botão Salvar:
  4. Por exemplo, a aplicação /csp/fhirsql está ok, veja:

Conexão do FHIR SQL Builder ao Repositório FHIR

Vamos conectar o FHIR SQL Builder ao nosso Repositório FHIR de exemplo, com os seguintes passos:

  1. Digite o link a seguir no navegador: http://localhost:32783/csp/fhirsql/index.html. Se pedir usuário e senha, digite _SYSTEM e SYS respectivamente.
  2. No topo da tela, perto do logotipo clique no botão com 3 riscos:
  3. Selecione a opção Repository Configuration:
  4. Clique no botão New da seção FHIR Repository Configurations:
  5. Preencha com os valores a seguir:
    1. Em Name, coloque o nome do repositório FHIR: FHIRSERVER.
    2. Em Host, coloque o IP ou DNS do servidor FHIR: localhost.
    3. Em Port, coloque a Porta do servidor FHIR: 52773
    4. Em Credentials, clique em New e crie as credenciais com os valores a seguir:
    5. Selecione a nova credencial SuperUser no campo Credentials e em seguida no campo FHIR Repository URL selecione /fhir/r4 e clique Save:
    6. A sua configuração está completa como na figura a seguir:

Criação das Especificações de FHIR para SQL

É hora de mapear usando abordagem no code, siga os passos:

  1. Vá no topo no botão de 3 riscos e selecione a opção Home do menu:
  2. Clique no botão New da seção Analyses:
  3. Configure a análise conforme a figura a seguir:
    1. FHIR Repository, coloque o nome criado na configuração anterior: FHIRSERVER.
    2. Em Selectivity Percentage, vamos colocar 100 para indexar todos os registros.
  4. Clique no botão Launch Analysis Task.
  5. Espere a conclusão da tarefa e pronto, teremos 100% na coluna Percent Complete depois de algum tempo:
  6. Agora vamos criar uma especificação de transformação, podemos criar várias, 1 para cada consulta que se fizer necessário consumir. Para isto, clique no botão New da seção Transformations Specifications:
  7. Preencha o formulário conforme os valores a seguir e clique no botão Create Transformation Specification:
  8. Vamos criar uma transformação simples para obter os dados básicos de paciente, em um cenário com ETL isto envolveria várias tabelas, mas depois do mapeamento, teremos todos os dados em uma tabela única com o nome que o negócio desejar.
  9. Clique em Patient > name > use e ao lado aceite as sugestões e clique em Add to Projection:
  10. Repita os mesmos passos até que tenhamos a lista a seguir de campos:
  11. Abaixo clique no botão Done para concluir o mapeamento. Agora temos as configurações a seguir:

Criação das Projeções

Para efetivamente criar as projeções a partir dos mapeamentos, siga os passos:

  1. Vá na terceira seção Projections e clique no botão New:
  2. Preencha o formulário com os valores a seguir:
  3. Clique no botão Add Entry e adicione permissão de acesso para os usuários a seguir:
  4. Clique em Launch Projection para as tabelas e colunas definidas serem criadas no schema sqlbuilder.
  5. Agora temos o cenário completo:

Consumo das projeções (mapeamentos) com linguagem SQL

Agora é possível consumir a partir de qualquer client JDBC/ODBC ou mesmo pelo Portal de Administração. Siga os passos:

  1. Vá no Portal de Administração para o namespace FHIRSERVER em http://localhost:32783/csp/sys/%25CSP.Portal.Home.zen?$NAMESPACE=FHIRSERVER&$NAMESPACE=FHIRSERVER.
  2. Vá em Explorer do Sistema > SQL:
  3. Em esquema, selecione sqlbuilder:
  4. Expanda Tabelas e arraste o link sqlbuilder.Patient para o campo Executar consulta, a consulta é montada e então clique em EXECUTAR e veja os resultados:
  5. São 6 pacientes retornados a partir de uma consulta SQL em uma simples tabela! Muito mais fácil!
  6. Agora basta ir montando novos mapeamentos e consumir onde for necessário.
  7. Aproveite!
Discussão (4)3
Entre ou crie uma conta para continuar