Novo
Artigo Evandro Wendt · 3 h atrás 3m read

Bem-vindo ao próximo capítulo da minha série sobre CI/CD, onde discutimos possíveis abordagens para o desenvolvimento de software com tecnologias InterSystems e GitLab.

Hoje quero compartilhar algumas abordagens que podem reduzir o tempo de compilação (especialmente se você estiver fazendo compilação incremental/diferencial em vez de um build completo).

Flags e qualificadores do compilador

O carregamento e a compilação do código são afetados por uma variedade de flags e qualificadores.

0
0 1
Novo
Artigo Evandro Wendt · Maio 23 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 estado encontrado no momento da avaliação. 
Ela funciona como uma espécie de “snapshot” e pode ter mudado desde então.   
As avaliações feitas por outros membros da comunidade são marcadas com * na última coluna.

0
0 3
Novo
Artigo Evandro Wendt · Maio 23 3m read

IRIS Audio Query é uma aplicação full-stack que transforma áudio em uma base de conhecimento pesquisável.

Estrutura do projeto

community/
├── app/                   # FastAPI backend application
├── baml_client/           # Generated BAML client code
├── baml_src/              # BAML configuration files
├── interop/               # IRIS interoperability components
├── iris/                  # IRIS class definitions
├── models/                # Data models and schemas
├── twelvelabs_client/     # TwelveLabs API client
├── ui/                    # React frontend application
├── main.py                # FastAPI application entry point
└── settings.py            # IRIS interoperability entry point
0
0 3
Novo
Artigo Evandro Wendt · Maio 20 3m read

Introdução

Se você já se perguntou como depurar algumas requisições que estão sendo feitas para ou a partir do IRIS, aqui vai um pequeno tutorial sobre como fazer isso.

Durante um projeto complexo, normalmente você recebe as especificações e implementa a comunicação entre o IRIS e outros sistemas com base nelas. Mas do papel para o mundo real geralmente existe uma grande diferença, e você precisa entender por que está recebendo um erro em um parâmetro, em um cabeçalho, por que não está recebendo os dados e assim por diante.

0
0 3
Novo
Artigo Evandro Wendt · Maio 15 2m read

Estamos muito entusiamados em lançar um novo recurso do CCR com tecnologia de IA que deve ajudar nossos usuários a economizar tempo e evitar chamadas para o Suporte. Hoje estamos apresentando o novo resumo gerado por IA do CCR Transport Log Analyst (ou CTLA). O objetivo do CTLA é fornecer uma análise de erros que ocorreram no Transport Log de um CCR específico, e orientar o usuário sobre quais etapas podem ser tomadas para corrigir a situação, além do que poderia ter sido feito para evitá-la desde o início.

0
0 7
Novo
Artigo Evandro Wendt · Maio 12 2m read

Na sequência do anúncio da disponibilidade geral do JediSoft IRISsync®, quis mostrar como ele pode ajudar a evitar a divergência de configurações e garantir que seu failover esteja sempre pronto.

Ao gerenciar servidores de produção do InterSystems IRIS, até mesmo uma pequena alteração de configuração pode causar problemas significativos se não for replicada nos seus ambientes de espelhamento. Muitas vezes, essas diferenças passam despercebidas até que o ambiente de failover falhe.

0
0 8
Novo
Artigo Evandro Wendt · Maio 12 3m read

Apresentando o iris-synthetic-data-gen

Hoje publiquei um novo pacote no Open Exchange para geração de dados sintéticos diretamente no IRIS.

Pode ser um processo frustrante encontrar datasets decentes quando você está tentando montar um aplicativo de demonstração. Talvez o dataset não seja tão importante, mas você ainda quer que ele pareça minimamente realista e com várias tabelas relacionadas que sejam utilizáveis diretamente no IRIS, com os elegantes joins implícitos usando ->

0
0 8
Artigo Evandro Wendt · Maio 6 2m read

. . . você não está sozinho. 

A Ajuda está disponível.

Isso me tomou um tempo para descobrir, e imagino que outras pessoas também possam estar enfrentando dificuldades. Eu passei por toda a parte do Entra para configurar um fluxo de client credentials para enviar e-mail através de uma conta Microsoft 365. Consegui obter meu token com sucesso, mas nunca consegui autenticar com o servidor SMTP usando a classe %Net.SMTP. Havia duas partes para resolver isso.

Primeiro, o access token do autenticador precisa ser mais do que APENAS o access token. Ele precisa ser formatado como:

set smtp.authenticator.AccessToken = "user="_emailaddress_$C(1)_"auth=Bearer "_token_$C(1,1)
0
0 20
Artigo Evandro Wendt · Maio 6 3m read

No InterSystems IRIS, ao compilar uma classe persistente, você obtém automaticamente uma tabela SQL. Às vezes, há situações que exigem ter nomes/opções ligeiramente (ou não tão ligeiramente) diferentes no SQL em comparação com o modelo de objetos. Aqui estão algumas das configurações que você pode alterar para que isso aconteça.

Configurações no nível da classe

Elas definem a “face” da sua classe quando ela aparece como uma tabela no catálogo SQL.

SqlTableName permite alterar o nome da tabela SQL que armazena os objetos da sua classe.

0
0 14
Artigo Evandro Wendt · Maio 6 1m read

Se um dos seus pacotes no OEX receber uma avaliação, você é notificado pelo OEX apenas do SEU próprio pacote.
A avaliação reflete a experiência do avaliador com o status encontrado no momento da avaliação.
É uma espécie de instantâneo e pode ter mudado desde então.
Avaliações de outros membros da comunidade são marcadas com * na última coluna.
 

# Package Review Stars IPM Docker *
1 ms-iris-credit-risk another 6* top experience 6.0 . y .
2 Free DBsize with Swagger great remote access 5.0 . . *
3 iris-configuration-manager-extension Me popupou muito tempo. 5.0 . . *
4 docbook-markdown-extension Convenient 5.
0
0 14
Artigo Evandro Wendt · Maio 3 3m read

Recentemente, substituí meu laptop antigo por um novo e tive que migrar todos os meus dados. Procurei um guia, mas não consegui encontrar nada que explicasse em detalhes como migrar conexões de servidor do InterSystems Studio e do Visual Studio Code de um PC para outro. Simplesmente reinstalar as ferramentas não é suficiente, e migrar todas as conexões manualmente parecia uma perda de tempo. No final, consegui resolver o problema, e este artigo explica como.

InterSystems Studio

Exportando conexões de servidor

Migrar as conexões do Studio foi a parte mais desafiadora.

0
0 20
Artigo Evandro Wendt · Abr. 13 3m read

A partir do InterSystems IRIS 2025.1, a forma como os cubos dependentes são tratados em construções (builds) e sincronizações de cubos foi alterada.

Essa mudança pode exigir a modificação de métodos personalizados de construção/sincronização. Se você estiver usando o Gerenciador de Cubos (Cube Manager), essas alterações já foram consideradas e tratadas, o que significa que nenhuma ação é necessária.

Antes dessa mudança, era necessário que os cubos fossem construídos e sincronizados na ordem correta, levando em conta quaisquer relacionamentos ou dependências entre eles. Com essa alteração, os cubos dependentes são atualizados automaticamente conforme necessário ao utilizar as APIs %BuildCube ou %SynchronizeCube.

0
0 12
Artigo Evandro Wendt · Abr. 13 5m read

 

Uma pergunta que surge rapidamente ao configurar o IAM (também conhecido como Kong Gateway) é quantas rotas devem ser criadas para alcançar todos os objetos de negócio em uma API IRIS.

Um erro comum é criar uma rota por objeto de negócio, multiplicando desnecessariamente o número de rotas.

0
0 16
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 16
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 21
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.Definition
{

Parameter TaskName = "Long running messages";

Property LongRunningMessageThreshold As %Integer(MINVAL = 1) [ InitialExpression = 60 ];

Method OnTask() As %Status
{
	set ts = $zdatetime($NOW(0),3,1)
	set ns = ""
	while 1 {
		// Iterate namespaces
		set ns = $o($$$EnsJobMonitorRoot(ns))
		quit:ns=""
		
		set job =""
		while 1 {
			// Iterate jobs
			set job = $o($$$EnsJobMonitorRoot(ns, job))
			quit:job=""
			
			// Get business host name
			set bh = $o($$$EnsJobMonitorRoot(ns,job,""))
			
			// Get the time of the last state change
			set lastActivity = $$$EnsJobMonitorRoot(ns,job,bh,"%LastActivity")
			
			// Get active message, if any - bh can be just idling
			set active = $d(^[ns]Ens.ActiveMessage(job),messageid) // From $$$EnsActiveMessage
			if active {
				set time = $system.SQL.Functions.DATEDIFF("s", lastActivity,  ts)
				if time > ..LongRunningMessageThreshold {
					set text = $$$FormatText("Long running message %1, in ns: %2, BH: %3, processing since %4, for %5 seconds", messageid, ns, bh, lastActivity, time)
					// For debug
					// write text, !
					do ##class(%SYS.System).WriteToConsoleLog(text)
				}
			}
		}
	}
	quit $$$OK
}

}
0
0 10
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 18
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 14
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 12
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 10
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 11
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"2024.1.2"
0
0 10
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 15
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 15
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 18
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 15
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 13