#InterSystems IRIS for Health

0 Seguidores · 371 Postagens

InterSystems IRIS for Health™ é a primeira e única plataforma de dados do mundo projetada especificamente para o rápido desenvolvimento de aplicações de saúde, para gerenciar os dados mais críticos do mundo. Inclui poderosos recursos prontos para uso: processamento e análise de transações, um modelo de dados de saúde extensível, desenvolvimento de solução baseada em FHIR, suporte para padrões de interoperabilidade em saúde e muito mais. Tudo isso permitindo que os desenvolvedores percebam valor e criem aplicações inovadoras, rapidamente. Saber mais.

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 20
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.

Para reduzir o tamanho, decidi minificar o XML, mas como minificar um documento XML no IRIS?

0
0 16
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

1.

0
0 27
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.

Antes de tudo, precisamos de um Namespace e de um endpoint FHIR.

0
0 21
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.

Pensei em como transformar mensagens HL7 em JSON.

0
0 26
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.

😀 Vamos descobrir que todos os dados de exemplo estão armazenados no namespace IRISAPP.

0
0 28
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

  • Uma página CSP é chamada por sua URL
  • No método OnPreHTTP
    • A System Query preenche a tabela temporária a partir de %SYS
    • Se o parâmetro correto da URL for fornecido
    • ?
0
0 24
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).

image

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.

Class interop.msg.
0
0 27
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!

1. Crie uma nova classe utilitária datagen.utli.

0
0 37
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.
1
0 36
Artigo Evandro Wendt · jan 6 1m read

Muitas vezes, ao trabalhar com dados FHIR, por exemplo com o IRIS For Health, você vai achar útil criar uma operação FHIR personalizada. O padrão FHIR já vem com um conjunto de operações definidas (como $everything), mas uma operação personalizada é útil quando você precisa criar funcionalidades extras que vão além do conjunto de operações padrão do FHIR. A documentação guia você passo a passo (embora este comentário possa ser útil para quem está começando).

0
0 26
Artigo Evandro Wendt · jan 6 2m read

Rubrica de FAQ da InterSystems

Se você tentar eliminar uma global que está mapeada no nível de subscrito a partir do nó raiz, você receberá um erro e ela não será excluída. Isso ocorre porque o comando kill para globais mapeadas no nível de subscrito não pode ser usado atravessando mapeamentos.

// Suppose subscript-mapped globals exist in different databases, as shown below:
^TEST(A*~K*) -> database A
^TEST(L*~Z*) -> database B

// Trying to kill from the top level will result in a <SLMSPAN> error.
NAMESPACE>Kill ^TEST
<SLMSPAN> <- This error is output.
0
0 34
Artigo Evandro Wendt · jan 4 2m read

Rubrica de FAQ do InterSystems

O utilitário ^%GCMP pode ser usado para comparar o conteúdo de dois globals.

Por exemplo, para comparar ^test e ^test nos namespaces USER e SAMPLES, ficaria assim:

No exemplo abaixo, 700 globais idênticas são criadas nos dois namespaces, e o conteúdo de uma delas é alterado para torná-lo o alvo de detecção.

0
0 32
Artigo Evandro Wendt · jan 4 1m read

gj :: configExplorer é uma nova extensão do VS Code que se integra ao Server Manager e utiliza o Structurizr para gerar diagramas de configuração dos seus servidores.

Aqui está um curto vídeo introdutório.

Ao usar a API Nativa do Intersystems IRIS para Node.js, não é necessário instalar nenhum código de suporte nos servidores. Essa escolha de tecnologia também permite que ele participe do atual concurso da Developer Community.

0
0 34
Artigo Evandro Wendt · jan 4 1m read

Olhando para o meu banco de dados, vejo que tenho um ^rINDEXSQL muito grande! Por que isso? 😬

Na página de SQL do Management Portal, em "SQL Statements", vejo um botão 'Clean stale' – o que ele faz? 🤔

Na lista de Statements, alguns têm um valor em 'Location' e outros não. Como isso acontece? 🤨

0
0 27
Artigo Evandro Wendt · jan 4 2m read

Olá a todos,

Primeiro quero reconhecer @Theo Stolker e @Rupert Young, porque eles me ajudaram com a solução.

Quando vocês usam EnsLib.SQL.Snapshot como uma propriedade na mensagem de resposta para retornar dados do Snapshot (por exemplo, de uma Business Operation para um Business Process), os dados do Snapshot não são limpos com a tarefa/serviço de depuração de mensagens.

Class ResponseMessage Extends Ens.Response

{

    Property SnapshotProp As EnsLib.SQL.Snapshot;

}

Os dados ficarão presos no global: ^Ens.AppData. Vocês podem encontrá-los com esta consulta em System > Globals: ^Ens.AppData("EnsLib.

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

Já faz algum tempo que criei um pequeno exemplo para implantar rapidamente, usando Docker, instâncias do InterSystems IRIS conectadas via ECP. O tempo passou e, como tudo, precisava de uma revisão e atualização...

0
0 33
Artigo Evandro Wendt · jan 4 1m read

Tenho o prazer de anunciar a publicação do gj :: dataLoader, uma nova extensão do VS Code que simplifica a tarefa de carregar dados de arquivos CSV locais em tabelas SQL dos seus servidores InterSystems IRIS.

Aqui está um vídeo introdutório:

gj :: dataLoader já está disponível no Marketplace para instalação direta no VS Code. É a minha proposta para o concurso “Bringing Ideas to Reality” 2025 e coloca em prática esta ideia: https://ideas.intersystems.com/ideas/DPI-I-667

Seus comentários serão bem-vindos.

0
0 28
Artigo Evandro Wendt · jan 2 3m read

Embeddedpy-bridge: Um kit de ferramentas para Embedded Python

Visão geral

Embedded Python é um divisor de águas para o InterSystems IRIS, oferecendo acesso ao vasto ecossistema Python diretamente dentro do banco de dados. No entanto, fazer a ponte entre ObjectScript e Python às vezes pode parecer como traduzir entre dois mundos diferentes.

Para tornar essa transição perfeitamente utilizável, embeddedpy-bridge.

0
0 29
Artigo Evandro Wendt · jan 2 3m read

Ao trabalhar com a Interoperabilidade da InterSystems (Iris / Health Connect / Ensemble), os dados de configuração costumam estar distribuídos entre vários itens de produção: serviços, processos, operações, adaptadores e suas configurações.

Uma necessidade operacional ou de segurança comum é responder a perguntas como:

  • Quais interfaces fazem referência a caminhos do sistema de arquivos?
  • Onde estão configurados diretórios, compartilhamentos de rede ou caminhos absolutos?
  • É possível auditar ou documentar rapidamente essas informações em todas as minhas produções?
0
0 29
Artigo Evandro Wendt · Dez. 31, 2025 1m read

SET atribui um valor à variável em tempo de execução.

#DIM declara a variável e o seu tipo de dado em tempo de compilação.







SET #DIM
Torna a variável dinâmica. Melhora a legibilidade.
Sem tipagem. Habilita IDE auto-completion.
Tempo de execução Util para referência a objetos.

#DIM name As %String
Set name = "Micheal Scott"
#DIM age As %Numeric
Set age = 36
#DIM employer As App.Employer               ; compile time
Set employer = ##class(App.Employer).%New() ; runtime 

SET ou #DIM? Seu design, suas regras.

0
0 36
Artigo Evandro Wendt · Dez. 30, 2025 4m read

Se você olhar o arquivo values.yaml do Helm chart do IKO, você encontrará:

useIrisFsGroup: false 

Vamos detalhar o que isso é e em quais situações você pode querer configurá-lo como true.

FsGroup se refere ao grupo do sistema de arquivos.

Por padrão, os volumes do Kubernetes pertencem ao usuário root, mas precisamos que o IRIS seja o dono de seus arquivos (o IRIS em containers é instalado sob o usuário irisowner). Para contornar isso, utilizamos um de dois métodos:

1) initContainers

Os initContainers são executados antes dos containers da aplicação (como o IRIS) em um pod.

0
0 27
Artigo Heloisa Paiva · Dez. 27, 2025 2m read

Você envia uma requisição HTTP e recebe de volta um erro HTTP, mas com uma página de erro HTML que você não esperava... o que está acontecendo? 🤔

Especificamente, por exemplo: talvez você tenha tentado ler um recurso FHIR (ex: /Patient/123) e recebeu uma página de erro 404, embora com outros IDs de pacientes você receba o payload do recurso normalmente — então "a página" definitivamente existe... por que você estaria recebendo uma página de erro 404? 🙄

1
0 39
Artigo Heloisa Paiva · Dez. 23, 2025 3m read

Olá amigo! 😊 Como você está hoje?

Gostaria de compartilhar uma pequena parte dos meus aprendizados no meu primeiro projeto oficial: a integração de máquinas de POS/EDC com nosso sistema de faturamento. Foi um desafio empolgante onde tive experiência prática trabalhando com APIs e fornecedores.

Como uma máquina de pagamento realmente funciona?

É simples: comece iniciando/criando uma transação e, depois, recupere o status do pagamento dela.

Aqui, iniciar/criar refere-se ao método POST, e recuperar refere-se ao GET.

0
0 46
Artigo Evandro Wendt · Dez. 23, 2025 3m read

Também nas versões anteriores era possível configurar o seu servidor FHIR para aceitar requisições via OAuth 2.0 (por exemplo, para um cliente SMART on FHIR), mas atualmente, com a versãov2024.3, lançada a algum tempo— existe um novo recurso que torna isso mais fácil: o OAuth FHIR Client QuickStart.

0
0 40
Artigo Evandro Wendt · Dez. 19, 2025 6m read

Neste artigo, vamos discutir todas as ferramentas de depuração incluídas noMicrosoft Visual Studio Code.

O que será abordado:

  • Breakpoints  
  • Janela de observação (Watch window)  
  • Call Stack  

Vamos começar aprendendo sobre os requisitos para depuração!

Pré-requisitos

Existem dois plugins (extensões) para depuração de ObjectScript:

O primeiro faz parte doInterSystems ObjectScript Extension Pack. O segundo éSerenji, um plugin independente que fornece um editor, gerenciador de arquivos e funcionalidades de depuração. Ambos os plugins podem ser instalados a partir da loja de plugins. Para ativar funcionalidades principais, o Serenji requer uma licença. Para este artigo, usaremos o InterSystems ObjectScript Extension Pack para reduzir a curva de aprendizado. Depois de dominar o básico, você pode considerar a compra de uma licença paga para o Serenji.
 

1
0 45
Artigo Heloisa Paiva · Dez. 17, 2025 6m read

Sumário

  1. Introdução
  2. Controle de Versão
  3. Exportando Classes
  4. Exportando Classes de BI Analytics
  5. Exportando Globals

Introdução

Neste artigo, cobriremos um início rápido para o desenvolvimento com Git na Comunidade de Desenvolvedores InterSystems e as práticas de controle de versão ao trabalhar com IRIS InterSystems. Abordaremos cenários em que precisamos exportar classes de Interoperabilidade, globals e elementos de analytics, como cubos e dashboards. Esses cenários englobam as principais práticas de controle de versão com o IRIS.

0
0 60
Anúncio Danusa Calixto · Nov. 28, 2025

Temos o prazer de anunciar o Programa de Acesso Antecipado para Modelos Personalizados do IntegratedML, um novo e poderoso recurso que estará disponível no IRIS 2026.1!

O que é?

O recurso Modelos Personalizados do IntegratedML amplia a funcionalidade existente do IntegratedML/AutoML, permitindo que você implante seus próprios modelos de aprendizado de máquina em Python diretamente em consultas SQL.

0
0 44