Artigo Heloisa Paiva · jan 25 7m read

Às vezes é mais conveniente, eficiente e seguro limitar as Buscas FHIR por "Listas" de Recursos pré-definidas.

Desde a v2025.1, suportamos vários recursos relacionados a Listas em nosso Servidor FHIR.

Vou destacar estes recursos aqui e fornecer alguns exemplos.

Em geral, você pode ver os detalhes sobre o Recurso List na documentação oficial do FHIR.

Mas aqui está uma breve descrição baseada no link acima:

0
0 17
Artigo Heloisa Paiva · jan 24 1m read

Em sua Produção de Interoperabilidade, você sempre pôde ter uma Business Operation que atua como um cliente HTTP utilizando OAuth 2.0 para autenticação, mas era necessário customizar a Operation para essa metodologia de autenticação. Desde a v2024.3, que foi lançada recentemente, há uma nova capacidade, fornecendo novas configurações para lidar com isso de forma mais fácil.

Em sua Business Operation que utiliza o HTTP Outbound Adapter, você encontrará novas Configurações (Settings), sob o grupo OAuth.

Por exemplo:

0
0 19
Artigo Heloisa Paiva · jan 23 2m read

A auditoria é uma capacidade crítica que garante a segurança do seu servidor e, há algum tempo, incluímos a capacidade de auditar instruções SQL executadas no servidor.

Com a v2024.3 já disponível, estamos fornecendo opções com granularidade mais refinada para definir esses eventos a serem auditados.

0
0 23
Artigo Heloisa Paiva · jan 22 1m read

O InterSystems IRIS for Health v2024.3 já está disponívelcomo Developer Preview há algum tempo, e eu gostaria de destacar o novo suporte relacionado à Busca FHIR (FHIR Search) que foi introduzido.

Foram adicionados suportes a dois Modificadores -

Estes permitirão consultas de busca mais flexíveis, sofisticadas e ricas.

E um Parâmetro de Resultado de Busca -

Isso permitirá resultados mais compactos (e potencialmente mais eficientes).

Veja também as Notas de Lançamento (Release Notes) relacionadas.

0
0 13
Artigo Heloisa Paiva · jan 21 3m read

Olá, agora gostaria de continuar com o tópico que discutimos anteriormente

Usando o Postman para testar o OAuth2.0 do repositório InterSystems FHIR - Parte 1

Pergunta 1: De onde vêm meu client_id e meu client_secret?

Resposta curta: Do Servidor de Autenticação.

Se você não possui um Servidor de Autenticação, pode configurar um da seguinte forma:

Forneça o hostname (o host deve suportar Https), pelo menos 1 tipo de concessão (escolhemos client credential aqui) e a configuração SSL/TLS

0
0 20
Artigo Heloisa Paiva · jan 20 4m read

Olá a todos, sou eu novamente para compartilhar o que ando estudando recentemente.😓

Recentemente, estou estudando como configurar a autenticação OAuth2 para o repositório InterSystems FHIR. E descobri que os seguintes artigos são muito bons e fáceis de seguir.😁

SMART on FHIR EHR Launch com IRIS for Health

Construindo um Repositório FHIR + Configuração de Servidor de Autorização OAuth2/Servidor de Recursos no IRIS for Health Parte 2

0
0 18
Artigo Evandro Wendt · jan 19 1m read

Aqui está um exemplo prático de como importar dados de um arquivo CSV para o Intersystems CACHÉ usando ObjectScript. Supondo que seu arquivo CSV seja simples (por exemplo, separado por vírgulas e com cabeçalhos), você pode usar %Stream.FileCharacter para lê-lo linha por linha e analisar os dados.


 

ClassMethod ImportCSV(filePath As %String) As %Status {
    Set stream = ##class(%Stream.FileCharacter).%New()
    Set sc = stream.LinkToFile(filePath)
    If 'sc Quit sc

0
0 20
Artigo Heloisa Paiva · jan 19 4m read

O InterSystems IRIS é construído sobre uma arquitetura que separa a organização lógica dos dados (namespaces) de seu local de armazenamento físico (bancos de dados). Compreender essa separação e a distinção entre Namespaces e Bancos de Dados é crucial para uma gestão de dados eficaz, segurança e, especialmente, para o compartilhamento de dados de alta performance.

Neste artigo, discutirei esses componentes fundamentais e fornecerei um guia prático sobre como aproveitar os mapeamentos de globals para compartilhar estruturas de dados nativas (globals) entre diferentes ambientes lógicos.

0
0 16
Artigo Evandro Wendt · jan 19 1m read

A nova versão do InterSystems Testing Manager, que lancei na semana passada, traz a incrível Test Coverage Tool do @Timothy Leavitt para o VS Code e é a minha participação no concurso Developer Tools 2025.

Aqui está uma imagem de prévia mostrando como os testes unitários do projeto IPM ainda não cobrem um recurso que aparentemente permite que um repositório IPM sobrescreva sua ordem de classificação.

Observe como a linha 88 é destacada em vermelho como um aviso para o desenvolvedor.

0
0 19
Artigo Evandro Wendt · jan 16 2m read

🔥 Curioso sobre o padrão FHIR de que todo mundo está falando?

📚 Leia para uma breve introdução e, em seguida, experimente um novo caminho de aprendizado para adquirir conhecimento mais aprofundado!

  

O padrão HL7® FHIR® revolucionou a forma como os desenvolvedores da área de saúde enfrentam os desafios da interoperabilidade de dados. O FHIR permite que sistemas de saúde troquem informações de forma fluida, e os dados dos pacientes podem ser consolidados em tempo real, independentemente de onde estejam armazenados.

0
0 26
Artigo Evandro Wendt · jan 16 3m read

Olá comunidade,

Quero compartilhar minha experiência trabalhando em projetos que lidam com um volume masivo de dados. Ao longo dos anos, tive a oportunidade de lidar com enormes volumes de dados de pacientes, dados de pagadores e logs transacionais enquanto trabalhava na indústria hospitalar. Tive a chance de criar relatórios enormes, que precisavam ser escritos usando lógicas avançadas para buscar dados em múltiplas tabelas, cujos índices não ajudavam a escrever código eficiente.

Aqui está o que aprendi sobre como gerenciar grandes volumes de dados de forma eficiente.

Escolhendo o melhor método de acesso aos dados

Como todos nós da comunidade sabemos, o IRIS oferece múltiplas maneiras de acessar dados. A escolha do método correto depende do requisito.

  • Acesso direto a global: o mais rápido para operações de leitura/gravação em massa. Por exemplo, se eu precisar percorrer índices e buscar dados de pacientes, posso percorrer as globais para processar milhões de registros. Isso economiza muito tempo.
Set ToDate=+HSet FromDate=+$H-1ForSet FromDate=$O(^PatientD("Date",FromDate)) Quit:FromDate>ToDate  Do
. Set PatId=""ForSet PatId=$Order(^PatientD("Date",FromDate,PatID)) Quit:PatId=""Do
. . Write$Get(^PatientD("Date",FromDate,PatID)),!
  • Usando SQL: Útil para relatórios ou necessidades analíticas, embora seja mais lento para conjuntos de dados muito grandes.
0
0 18
Artigo Evandro Wendt · jan 16 5m read

Entrei na InterSystems há menos de um ano. Mergulhar em ObjectScript e no IRIS foi empolgante, mas também cheio de pequenas surpresas que me pegaram de surpresa no começo. Neste artigo, reúno os erros mais comuns que eu, e muitos colegas novos, cometemos, explico por que eles acontecem e mostro exemplos concretos e correções práticas. Meu objetivo é ajudar outros desenvolvedores iniciantes a economizarem tempo e evitarem os mesmos tropeços no caminho.

1. Se perder entre as classes de sistema e por onde começar

0
0 25
Artigo Evandro Wendt · jan 16 2m read

Meu problema era separar mensagens HL7 por tipo de mensagem. Eu precisava criar várias Operações de Arquivo. Com código personalizado, consegui usar 1 adaptador de arquivo para 1 interface e vários tipos de mensagem. Cheguei a experimentar extrair o MSH-4 do conteúdo bruto para acessar informações dinâmicas adicionais, mas isso pode trazer a necessidade de verificações de erro mais robustas e/ou ações padrão de consulta.

Seguindo a convenção de nomenclatura recomendada de "To_FILE_<IntegrationName>"

Eu decidi usar um nome e um caminho de arquivo genéricos nas configurações padrão.

0
0 18
Artigo Evandro Wendt · jan 16 3m read

Em um projeto em que estou trabalhando, precisamos armazenar alguns XMLs arbitrários no banco de dados. Esse XML não tem nenhuma classe correspondente no IRIS; precisamos apenas armazená-lo como uma string (ele é relativamente pequeno e cabe em uma string).
Como existem MUITOS (milhões!) de registros no banco de dados, decidi reduzir o tamanho o máximo possível sem usar compressão. Sei que parte do XML a ser armazenado está indentada, parte não, isso varia.

0
0 15
Artigo Evandro Wendt · jan 16 2m read

Se um dos seus pacotes no OEX receber uma avaliação, você será notificado pelo OEX apenas sobre o SEU próprio pacote.
A classificação reflete a experiência do avaliador com o estado encontrado no momento da avaliação.
É como um tipo de snapshot e pode ter mudado nesse meio-tempo.
Avaliações feitas por outros membros da comunidade são marcadas com * na última coluna.

0
0 24
Artigo Evandro Wendt · jan 12 2m read

Eu estava enfrentando o mesmo problema que o Jerry enfrentou ao conectar o IRIS ao SQL Server. Minha conexão ODBC está configurada para autenticar via autenticação do Windows.

Configure IRIS ODBC connection with Windows authentication using a
 

Como eu resolvi isso?

Causa raiz

0
0 23
Artigo Evandro Wendt · jan 12 3m read

No cenário atual de dados de saúde, o FHIR se tornou o padrão para a troca de dados clínicos estruturados. No entanto, embora o FHIR se destaque em interoperabilidade, seu formato JSON torna a análise desafiadora — incluindo os FHIR QuestionnaireResponse.

Este projeto demonstra como transformar dados de FHIR QuestionnaireResponse de JSON aninhado em tabelas SQL relacionais e embeddings vetoriais. Ao integrar o InterSystems IRIS FHIR SQL Builder e Vector Search, desbloqueamos o significado semântico por trás das respostas dos pacientes.

Três Etapas para Construí-lo

0
0 24
Artigo Evandro Wendt · jan 12 4m read

Quando criamos um repositório FHIR no IRIS, temos um endpoint para acessar informações, criar novos recursos, etc. Mas existem alguns recursos no FHIR que provavelmente não teremos em nosso repositório, por exemplo, o recurso Binary (esse recurso retorna um documento, como um PDF, por exemplo).

Criei um exemplo em que, quando um recurso Binary é solicitado, o endpoint FHIR retorna uma resposta como se ele existisse no repositório.

0
0 19
Artigo Heloisa Paiva · jan 12 5m read

Motivação

Eu não conhecia ObjectScript até começar meu novo emprego. Objectscript não é exatamente uma linguagem de programação jovem. Comparada a C++, Java e Python, a comunidade não é tão ativa, mas estamos empenhados em tornar este lugar mais vibrante, não estamos?

Notei que alguns dos meus colegas acham complicado entender as relações de classes nesses projetos enormes. Não existe nenhuma ferramenta moderna de diagrama de classes fácil de usar para ObjectScript.

Trabalhos Relacionados

Eu testei trabalhos relevantes:

0
0 22
Artigo Evandro Wendt · jan 11 2m read

Um aplicativo que converte mensagens HL7 em objetos JSON. Há cerca de um ano, comecei um repositório no GitHub para coletar materiais relacionados a HL7. Recentemente, minha equipe adicionou uma interface HL7 à nossa Produção de Interoperabilidade e fomos solicitados a persistir as mensagens HL7. Criamos um tópico Kafka para receber as mensagens HL7. Usamos Kafka Bridges para enviar mensagens para os tópicos Kafka. As mensagens Kafka são enviadas para o Kafka Bridge em formato JSON.

0
0 24
Artigo Evandro Wendt · jan 11 1m read

Esta é uma produção de exemplo do Ensemble/Health Connect que demonstra como receber um pedido HL7 (ORM) de entrada a partir de um arquivo, extrair campos (neste caso, informações demográficas básicas) e inseri-los em uma tabela de um banco de dados SQL externo via ODBC.

Incluído no arquivo zip:

  • Código exportado
  • Mensagem ORM de exemplo
  • Documento "Como configurar"

 demo_hl7tosqlproduction.zip

0
0 25
Artigo Evandro Wendt · jan 11 3m read

Olá, pessoal. Quanto tempo! Mais uma vez, gostaria de compartilhar o que tenho estudado recentemente, criar tabelas estrangeiras usando SQL via JDBC.

Como estou aprendendo sobre o IRIS BI ao mesmo tempo, comecei utilizando este ambiente Docker de exemplo do Sample-BI.

https://github.com/intersystems/Samples-BI

Após iniciar o ambiente, faça login no portal de gerenciamento http://localhost:52773/csp/sys/UtilHome.csp  como Superuser.

Troque para o namespace IRISAPP.

0
0 23
Artigo Evandro Wendt · jan 10 1m read

Uma tentativa anterior contou com o auxílio de um método externo em Python.
Este aqui é totalmente CSP clássico, escrito com ISOS, JavaScript e HTML.

Além do gráfico, você também obtém números concretos, coletados recentemente da sua instância local ou de instâncias remotas que também tenham o pacote instalado.

Resultado final

Etapas do processamento

0
0 19
Artigo Evandro Wendt · jan 10 2m read

Eu gostaria de compartilhar com você um pequeno truque para personalizar como as mensagens são exibidas no Message Viewer. Em particular, como você pode exibir as mensagens em JSON (em vez da representação padrão em XML).

Mensagens são objetos usados para comunicar componentes de produções de interoperabilidade. No meu exemplo, eu defini uma mensagem que mais tarde eu serializo como JSON para enviar a uma API externa. Essa mensagem é definida como uma mensagem regular e também como um %JSON.Adaptor, para que eu possa exportar/importar diretamente para ou a partir de JSON.

0
0 21
Artigo Evandro Wendt · jan 10 5m read

Olá a todos,

Sou eu de novo 😁. No artigo anterior, Writing a REST api service for exporting the generated FHIR bundle in JSON, nós geramos um recurso DocumentReference, com o conteúdo codificados em Base64.

Question!! Is it possible to write a REST service for decoding it? Because I am very curious what is the message data talking about🤔🤔🤔

Duvida!! É possível escrever um serviço REST para decodificar isso? Porque estou muito curioso para saber o conteúdo da mensagem 🤔🤔🤔

OK, Vamos começar!

0
0 27
Artigo Heloisa Paiva · jan 8 22m read

Sumário

  1. Propósito do artigo
  2. O que são containers e por que eles fazem sentido com o IRIS
    1. Containers e Imagens em poucas palavras
    2. Por que containers são úteis para desenvolvedores
    3. Por que o IRIS funciona bem com o Docker
  3. Pré-requisitos
  4. Instalando a imagem do InterSystems IRIS
    1. Usando o Docker Hub
    2. Puxando a imagem
  5. Executando a imagem do InterSystems IRIS
    1. ​​​​​​​Iniciando um container do IRIS
    2. Verificando o status do container
    3. Executando código no terminal do container
    4. Acessando o IRIS Management Portal
    5. Conectando o container ao VS Code
    6. Parando ou removendo o container
    7. Definindo uma senha específica com uma montagem de vínculo (bind mount) 
    8. Usando volumes %SYS duráveis                       
      1. O que é armazenado com o %SYS durável            
      2. Como habilitar o %SYS durável
  6. Usando Docker Compose
     6.1 Exemplo de Docker Compose
     6.2 Executando Docker Compose
  7. Usando um Dockerfile para executar código-fonte personalizado
    1. Exemplo de Dockerfile
    2. Exemplo de Docker Compose
    3. Entendendo camadas, tagging de imagem e tempo de build vs. tempo de execução
    4. Código-fonte e script de inicialização (init script)
    5. Construindo a imagem com Dockerfile
    6. Executando instruções no terminal IRIS containerizado
  8. Conclusão e próximos passos
0
0 39
Pergunta Evandro Wendt · jan 2

Existe uma Master Table dentro do IRIS que estou preenchendo a partir do Epic, mas quero compartilhá-la com nossa equipe de Enterprise Application Development (Web). Como teste, consegui usar _SYSTEM a partir do Postman para executar o seguinte.

POST /api/atelier/v1/xxxx/action/query HTTP/1.1
Host: xxxxxxxx
Content-Type: application/json
Authorization: ••••••
Cookie: CSPSESSIONID-SP-443-UP-api-atelier-=00f0000000000AKyLjBfUvU$MpFD8UT8y$EoNKNw1ixZeXN4_Q; CSPWSERVERID=hzZAT5rb
Content-Length: 86

{"query": "SELECT * FROM osuwmc_Epic_Clarity.DepartmentMaster WHERE ID = '300000000'"}
1
0 33