Novo
Artigo Evandro Wendt · Abr. 3 2m read

Motivação

Por que precisamos disso?

  1. Falta de Contexto Compilado: As ferramentas de IA veem apenas o código-fonte; elas não sabem como a rotina compilada final realmente é.

  2. Alucinação de Macros: Como a IA não vê nossos arquivos#includeou macros do sistema, ela frequentemente os “inventa”, desperdiçando tempo durante a depuração.

  3. Lacuna na Documentação: A otimização de lógica mais profunda frequentemente exige compreender macros internas que não estão totalmente documentadas publicamente.

0
0 2
Novo
Artigo Evandro Wendt · Abr. 2 2m read

Trabalhar com arquivos geralmente começa de forma simples: abrir o arquivo, ler e processar. Essa abordagem funciona perfeitamente, até que o arquivo seja um Excel.

Uma Suposição Comum

À primeira vista, um arquivo Excel (.xlsx) parece apenas mais um arquivo de dados, linhas, colunas e valores. Nada incomum. Portanto, é natural assumir que ele pode ser lido da mesma forma que um arquivo .txt ou .csv. Mas é aí que as coisas começam a dar errado.

Por que arquivos Excel se comportam de forma diferente

A principal diferença está em como os dados são armazenados:

-> .txt / .

0
0 6
Novo
Artigo Evandro Wendt · Abr. 2 2m read

Se você tem mensagens de longa duração, aqui está um código simples para capturá-las. Você também pode usar o Queue Wait Alert para obter o mesmo resultado, embora este código consiga capturar até mesmo uma única mensagem ativa com a fila vazia. Ele também varre todos os namespaces sem modificar a produção, podendo ser usado para depuração.

Include Ensemble

Class User.LongMessagesTask Extends %SYS.Task.
0
0 2
Novo
Artigo Evandro Wendt · Mar. 31 1m read

A versão 2026.1 acabou de ser lançada como GA, e um dos recursos que estou ansioso para usar é o DTL Explainer.

Ele permite que você pegue uma Transformação de Dados (Data Transformation) e, com um clique, obtenha uma descrição em linguagem humana da transformação (que você também pode usar como base para a Descrição do DTL).

Para DTLs complexos, especialmente aqueles que você não escreveu ou que escreveu há muito tempo, isso permite obter uma compreensão clara e rápida do que está acontecendo.

0
0 6
Novo
Artigo Evandro Wendt · Mar. 31 2m read

As extensões oficiais do InterSystems para VS Code estão repletas de recursos que tornam o desenvolvimento com produtos InterSystems muito mais fácil. Hoje gostaria de destacar alguns recursos pequenos, mas úteis, que você pode não ter percebido.

Mostrar Todos os Membros da Classe

Você pode visualizar todos os membros da classe atual, incluindo os membros herdados, com o clique de um botão. Basta clicar no ícone da classe no canto superior direito da janela do editor e uma lista filtrável de todos os membros aparecerá. Ao clicar em um deles, ele será exibido em uma aba do editor.

0
0 4
Novo
Artigo Evandro Wendt · Mar. 31 1m read

Introdução

FHIR (Fast Healthcare Interoperability Resources) é o padrão moderno para armazenar e trocar dados clínicos. Mas, depois que seus dados estão em um servidor FHIR, como você realmente os explora? Os dados FHIR são armazenados em JSON — poderoso, mas não prático para leitura direta. Eu queria uma ferramenta onde você pudesse clicar em um paciente, ver suas condições, medicamentos, resultados laboratoriais e muito mais — em um formato limpo e legível. Então, eu criei o FHIR Patient Viewer.

0
0 6
Novo
Artigo Evandro Wendt · Mar. 31 3m read

Em hackathons nos quais a InterSystems participou e que eu apoiei, muitos estudantes perguntavam como todos os membros da equipe poderiam usar o mesmo banco de dados IRIS que haviam iniciado em um contêiner. Sugeri usar o ngrok para expor o IRIS local e percebi que não tínhamos documentação sobre isso. Portanto, achei que seria ótimo compartilhar essa poderosa técnica para aumentar a colaboração durante o desenvolvimento e os testes.

Guia Passo a Passo para Expor o InterSystems IRIS com ngrok

Este guia irá orientá-lo no processo de expor sua instância local do InterSystems IRIS usando o ngrok.

0
0 2
Novo
Artigo Evandro Wendt · Mar. 28 4m read

IrisTest é uma ferramenta leve, poderosa e fácil de usar, projetada para simplificar a geração de relatórios de testes unitários. Ela inclui um shell interativo e uma API para facilitar a comunicação, permitindo que os desenvolvedores gerenciem e gerem relatórios de suas execuções de teste em diversos formatos com facilidade. Seja para depuração ou para criar relatórios detalhados para análise, o IrisTest torna o processo simples e eficiente!

0
0 5
Novo
Artigo Evandro Wendt · Mar. 27 3m read

IAM - InterSystems API Manager é uma ótima ferramenta para monitorar seu tráfego. Se você está tentando usá-lo em seu cluster Kubernetes, talvez tenha tentado fazer um deployment semelhante a este:

apiVersion: intersystems.com/v1alpha1
kind: IrisCluster
metadata:
  name: iris
spec:
  licenseKeySecret:
    name: iris-key-secret
  configSource:
    name: iris-cpf
  imagePullSecrets:
    - name: intersystems-pull-secret
  topology:
    data:
      image: containers.intersystems.com/intersystems/iris-arm64:2024.1
      compatibilityVersion: "2024.1.
0
0 4
Novo
Artigo Evandro Wendt · Mar. 26 4m read

Uma extensão “estende” ou aprimora um recurso FHIR ou um elemento de dados de maneira personalizada. A extensão pode ser adicionada à raiz de um recurso, como “Patient.ethnicity” no perfil US Core, e também pode ser adicionada a elementos individuais, como HumanName, Address ou Identifier.

Você sabia que também é possível adicionar uma extensão a um tipo de dado primitivo?

Dados primitivos geralmente armazenam um único valor e são os elementos mais básicos no FHIR. Por exemplo: "Keren", false, 1234, 12/08/2024 etc.

0
0 4
Novo
Artigo Evandro Wendt · Mar. 26 2m read

Trabalhando em TI na área da saúde como um desenvolvedor iniciante, especialmente com o InterSystems TrakCare, você rapidamente percebe uma coisa: não se trata apenas de mensagens HL7 ou integrações de backend. Uma grande parte de fazer o TrakCare funcionar bem nos hospitais depende de como ele é configurado, customizado e suportado no lado da aplicação.

É aí que entram pessoas como eu — desenvolvedores tecno-funcionais que entendem tanto a parte técnica quanto o impacto nos fluxos reais de trabalho hospitalares.

Não somos apenas técnicos (ou consultores funcionais)

Nosso papel fica bem no meio.

0
0 4
Novo
Artigo Evandro Wendt · Mar. 26 4m read

Apesar de o comando LOCK (docs) ser uma parte fundamental do InterSystems IRIS, responsável pela concorrência, não há muita discussão sobre ele na Developer Community. O que é compreensível, considerando que é um comando estável e de nível relativamente baixo. Neste artigo, vou mostrar um exemplo simples de como usar locks com interoperabilidade.

0
0 8
Novo
Artigo Evandro Wendt · Mar. 25 2m read

Por mais de 15 anos, venho explorando maneiras de acelerar a forma como utilizo sistemas e tecnologias da InterSystems por meio de scripts em AutoHotkey Como um usuário avançado de teclado (evito usar o mouse sempre que possível), achei muito útil configurar atalhos para acessar meus sistemas e ferramentas de pesquisa mais utilizados o mais rápido possível. Embora eu utilize essa abordagem há muitos anos, esta é a primeira vez que apresento meu método e um script de atalhos voltado ao cliente para o D.C. e o OEx.

0
0 8
Novo
Artigo Evandro Wendt · Mar. 25 5m read

Introdução

A plataforma de dados InterSystems IRIS há muito tempo é conhecida por seu desempenho, interoperabilidade e flexibilidade entre linguagens de programação. Durante anos, os desenvolvedores puderam usar o IRIS com Python, Java, JavaScript e .NET — mas os desenvolvedores de Go (ou Golang) ficaram esperando.

Golang Logo

Essa espera finalmente acabou.

O novo driver go-irisnative traz suporte a GoLang para o InterSystems IRIS, implementando a API padrão database/sql

0
0 7
Novo
Artigo Evandro Wendt · Mar. 23 4m read

Introdução

Em um artigo anterior, apresentei o módulo IRIStool, que integra de forma transparente a biblioteca pandas do Python com o banco de dados IRIS. Agora, estou explicando como podemos usar o IRIStool para aproveitar o InterSystems IRIS como base para buscas inteligentes e semânticas sobre dados de saúde no formato FHIR.

Este artigo cobre o que fiz para criar o banco de dados de outro dos meus projetos, o FHIR Data Explorer. Ambos os projetos são candidatos no concurso atual da InterSystems, então, por favor, vote neles se os achar úteis.

1
0 16
Novo
Artigo Evandro Wendt · Mar. 23 4m read

Aqui na InterSystems, frequentemente lidamos com conjuntos massivos de dados estruturados. Não é incomum ver clientes com tabelas contendo mais de 100 campos e mais de 1 bilhão de linhas, cada tabela totalizando centenas de GB de dados. Agora imagine fazer o join de duas ou três dessas tabelas, com um esquema que não foi otimizado para esse caso de uso específico. Só por diversão, vamos supor que você tenha 10 anos de dados de EMR de 20 hospitais diferentes em todo o seu estado, e você foi encarregado de encontrar….

0
0 3
Novo
Artigo Evandro Wendt · Mar. 23 3m read

Ao trabalhar com linguagens externas para o IRIS (como Python e Node.js), uma das primeiras coisas que você precisa fazer é estabelecer uma conexão com uma instância do IRIS.

Por exemplo, para criar uma conexão em Python (https://pypi.org/project/intersystems-irispython/):

import iris

# Open a connection to the server
args = {
	'hostname':'127.0.0.1', 
	'port': 1972,
	'namespace':'USER', 
	'username':'username', 
	'password':'password'
}
conn = iris.connect(**args)

# Create an iris object
irispy = iris.createIRIS(conn)

# Create a global array in the USER namespace on the server
irispy.
0
0 6
Novo
Artigo Evandro Wendt · Mar. 23 1m read

Rubrica de FAQ da InterSystems

Se você quiser gerar um erro personalizado arbitrário dentro de um bloco TRY, pode passar uma exceção com um throw, da seguinte forma. No exemplo abaixo, um erro personalizado é gerado se Stcount for menor que 1.

Class User.Test
{

ClassMethod ExceptionTest()
 {
    try
    {
      // : some codes
      if (Stcount<1) {
          throw ##class(%Exception.General).%New("User-defined error", "5001", "location", "Data at location error")
          // User-created errors are 5001 and above
      }
    }
    catch ex
    {
      write "Errors #", ex.
0
0 9
Artigo Evandro Wendt · Mar. 21 4m read

O que é Dados Não Estruturados?
Dados não estruturados referem-se a informações que não possuem um modelo de dados ou organização predefinidos. Em contraste com os dados estruturados encontrados em bancos de dados com estruturas claras (por exemplo, tabelas e campos), os dados não estruturados não possuem um esquema fixo. Esse tipo de dado inclui textos, imagens, vídeos, arquivos de áudio, postagens em redes sociais, e-mails e muito mais.

Por que Insights de Dados Não Estruturados São Importantes?

0
0 7
Artigo Evandro Wendt · Mar. 21 3m read

Introdução

O InterSystems IRIS permite criar APIs REST usando classes ObjectScript e o framework %CSP.REST. Isso possibilita o desenvolvimento de serviços modernos para expor dados para aplicações web, aplicativos móveis ou integrações de sistemas.

Neste artigo, você aprenderá como criar uma API REST básica no InterSystems IRIS, incluindo:

  • Uma classe de dados persistente
  • Uma classe REST com métodos GETe POST 
  • Uma aplicação web para expor a API
  • Uma demonstração completa usando Docker

Passo 1: Criar a classe de dados Demo.Producto

Class Demo.Producto Extends (%Persistent, %JSON.
0
0 11
Artigo Evandro Wendt · Mar. 21 2m read

Como vocês provavelmente sabem, o Health Connect / IRIS for Health suporta nativamente mensagens DICOM, e muitos de vocês já o utilizam diariamente. Recentemente, descobri um probleminha bastante insidioso que nosso querido @Alberto Fuentes me ajudou a resolver.

Nós (ou melhor, eu) chamaremos esse fenômeno de efeito Creosote (quem conhece Monty Python entenderá a referência; para os demais, vocês podem ver o sketch aqui).

Why Monty Python's Mr Creosote is the ultimate gross-out icon - Yahoo  Movies UK

O Sr.

0
0 14
Artigo Evandro Wendt · Mar. 21 1m read

Como parte da nova onda de UI de Interoperabilidade (veja as novidades em 2025.1 e 2025.3 por  @Aya Heshmat), a versão 2026.1, que já está disponível em Developer Preview, e isso pode ser um bom motivo para você experimentá-la - trará a nova interface para o editor BPL (e outras melhorias de UI).

Aqui vai um pequeno teaser:

Parte do que eu gostei especialmente -

  • A capacidade de auto-complete ao editar ações Assign e Conditions, veja no lado direito acima.
  • A Tree View de todo o BP, que permite ver também as ações internas de loops, etc., de uma só vez, veja no lado esquerdo acima.

@Aya.

0
0 14
Artigo Evandro Wendt · Mar. 21 3m read

A injeção de SQL continua sendo uma das vulnerabilidades mais críticas em aplicações que dependem de banco de dados, permitindo que atacantes manipulem consultas e potencialmente acessem ou comprometam dados sensíveis. No InterSystems IRIS, os desenvolvedores têm acesso tanto ao SQL Dinâmico quanto ao SQL Embutido, cada um com características distintas. Entender como usá-los de forma segura é essencial para prevenir a injeção de SQL.

O Problema: SQL Dinâmico e Injeção de SQL

O SQL Dinâmico constrói consultas como strings em tempo de execução.

0
0 7
Artigo Evandro Wendt · Mar. 21 4m read

img

Este artigo irá introduzir você ao conceito de ambientes virtuais em Python, que são essenciais para gerenciar dependências e isolar projetos do sistema operacional.

O que é um ambiente virtual?

Um ambiente virtual é uma pasta que contém:

  • Uma versão específica do Python
  • No início, um diretório site-packages vazio

Ambientes virtuais ajudam a isolar seu projeto da instalação do Python do sistema operacional e de outros projetos.

Como usá-lo?

0
0 14
Artigo Evandro Wendt · Mar. 11 3m read

Background

Equipes de Serviço Médico de Emergência (EMS) frequentemente chegam ao departamento de emergência com pacientes cujos dados demográficos estão incompletos ou desconhecidos — sem número de prontuário médico (MRN), sem nome confirmado e, às vezes, sem data de nascimento. Ainda assim, as notas de transporte do EMS precisam ser registradas no prontuário correto.

Para apoiar uma documentação segura e confiável, agências de EMS, serviços de integração de terceiros e equipes de integração hospitalar constroem interfaces seguras que trocam identificadores e mensagens clínicas.

0
0 11
Artigo Evandro Wendt · Mar. 6 2m read

iris-budget

Eu criei o aplicativo iris-budget para o InterSystems Full Stack Contest em 2026. Por full stack, queremos dizer uma aplicação web ou móvel de frontend que insere, atualiza ou exclui dados no InterSystems IRIS via REST API, Native API, ODBC/JDBC ou Embedded Python.

Meu aplicativo usa múltiplas REST APIs para adicionar uma nova categoria ou recuperar uma lista de categorias de despesas e receitas.

Primeira aplicação web /csp/coffee

Eu herdei /csp/coffee do module.xml no iris-fullstack-template.

Sergunda aplicação web /csp/budget

Para este projeto, criei um arquivo Swagger chamado "budget.

0
0 14
Artigo Evandro Wendt · Mar. 5 2m read

Sempre há quem diga que seu filho se parece mais com a mãe ou com o pai. Que tal usar matemática e Inteligência Artificial para ter certeza? O aplicativo facial-matching pode te dar a resposta.

Veja os resultados:

  1. Faça update das fotos do Pai, da Mãe e da Criança.:

 

2.Clique no botão Calcular Semelhança (Calculate Resemblance) e veja os resultados:

Detalhes de implementação

1.Obtem os arquivos de imagem do pai, da criança e da mãe.:

       father_file = request.files['father_image']
       child_file = request.files['child_image']
       mother_file = request.files['mother_image']

2.

0
0 24
Artigo Evandro Wendt · Mar. 5 1m read

Olá a todos,

Criei um método para calcular a idade de uma pessoa, ou a idade de um processo, contrato ou qualquer outra coisa que você quiser.

/// Calculate the age from date of birth and other date (by default shoud be today).
/// <b>dateOfBird</b> Date of birth in cache format. ie. $ZDH("1972-01-01",3)
/// <b>day</b> Date to calculate to. ie: $H
ClassMethod AgeAt(dateOfBirth, day) As %Integer{
    quit:dateOfBirth=""
    quit:day=""
    
    set yeardob=$SYSTEM.SQL.DATEPART("year",dateOfBirth)
    set yearday=$SYSTEM.SQL.
0
0 14
Artigo Evandro Wendt · Mar. 5 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 status encontrado no momento da avaliação. É como uma espécie de snapshot e pode ter mudado nesse meio tempo. Avaliações feitas por outros membros da comunidade são marcadas com * na última coluna.

Também fiz vários Pull Requests no GitHub quando encontrei um problema que podia corrigir. Alguns foram aceitos e mesclados, e outros foram simplesmente ignorados.

0
0 11
Artigo Evandro Wendt · Mar. 5 1m 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 status encontrado no momento da avaliação.
É como uma espécie de snapshot e pode ter mudado nesse meio tempo.
Avaliações feitas por outros membros da comunidade são marcadas com * na última coluna.

Também coloquei vários Pull Requests no GitHub quando encontrei um problema que eu podia corrigir.
Alguns foram aceitos e mesclados, e alguns foram simplesmente ignorados.

0
0 15