Antes de encontrar a melhor solução para Supply Chain, precisamos entender o que é Supply Chain. Bom, independente da língua utilizada, o termo é conhecido pelo nome já mencionado. A título de curiosidade, a tradução em Português Brasileiro é “Cadeia de Suprimentos”, eventualmente também chamado de “Cadeia Logística”, mas, não vamos nos ater a nomenclatura, e sim ao significado.
Dear Sir/Madam,
I need to generate a payment slip for accounting, in PDF format, using Object Script and Zen Reports. This slip needs to print twice per page. I will read the information globally and generate the printout.
Does anyone have an example they could provide?
Thank you in advance.
Davidson
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.
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.
O teorema PACELC foi criado por Daniel Abadi (Universidade de Maryland, College Park) em 2010 como uma extensão do teorema CAP (criado por Eric Brewer - Consistência, Disponibilidade e Tolerância a Partições). Ambos auxiliam no projeto da arquitetura mais adequada para o funcionamento de plataformas de dados em ambientes distribuídos, considerando os aspectos de consistência versus disponibilidade. A diferença reside no fato de que o PACELC também permite a análise da melhor opção para ambientes não distribuídos, tornando-se o padrão ouro para a consideração de todos os cenários possíveis na definição da topologia e arquitetura de implantação.
O teorema CAP afirma que, em sistemas distribuídos, não é possível ter consistência, disponibilidade e tolerância a partições simultaneamente, exigindo a escolha de duas entre as três, conforme o diagrama a seguir.

Fonte: https://medium.com/nerd-for-tech/understand-cap-theorem-751f0672890e
Olá e bem-vindo(a) às Notícias do Ecossistema de Desenvolvedores!
O primeiro trimestre do ano foi repleto de atividades empolgantes no Ecossistema de Desenvolvedores da InterSystems. Caso você tenha perdido alguma coisa, preparamos uma seleção das notícias e tópicos mais importantes para você ficar por dentro!

Olá Comunidade,
Preparar-se para os exames de Certificação da InterSystems exige mais do que ler a documentação. Requer prática focada e alinhada aos objetivos reais do exame. Se você pretende validar sua experiência em HL7, SQL, Administração de Sistemas ou Desenvolvimento, uma preparação estruturada pode fazer toda a diferença.
🧑🏫 Plataforma de preparação para exames
A plataforma oferece um amplo conjunto de questões práticas mapeadas para as áreas de certificação, juntamente com explicações detalhadas das respostas que remetem à documentação relevante.
Olá Comunidade,
Estamos muito animados em compartilhar que lançamos mais um tutorial gratuito e interativo, desenvolvido para dar a você uma pequena amostra do InterSystems Data Studio.
🧑🏫 Introdução ao InterSystems Data Studio 🧑💻

Olá Comunidade,
Estamos muito animados em compartilhar que acabamos de lançar um novo tutorial gratuito e interativo, desenvolvido especialmente para aqueles que são novos no InterSystems IRIS e buscam uma introdução clara e prática aos seus conceitos principais.
🧑🏫 Modelos de Dados do InterSystems IRIS 🧑💻

Olá Comunidade,
Temos o prazer de convidá-lo(a) a participar da criação da próxima geração de ferramentas de desenvolvimento ObjectScript. Estamos trabalhando em um Assistente de Codificação ObjectScript com Inteligência Artificial, projetado especificamente para desenvolvedores IRIS. Não se trata de uma IA genérica adaptada para ObjectScript, mas sim de uma solução construída do zero para compreender as peculiaridades do ObjectScript, as APIs do IRIS, os processos de interoperabilidade e os fluxos de trabalho reais de desenvolvedores.
Para garantir que criemos algo realmente útil, precisamos da sua opinião.
👉 Pesquisa para Desenvolvedores do Agente de Codificação ObjectScript 👈
.jpg)
Olá Comunidade!
Temos o prazer de compartilhar o próximo vídeo da série "Code to Care" em nosso canal do YouTube da InterSystems Developers:
⏯ Vibe de Programação: Deixando a IA construir enquanto você dirige:
Motivação
Por que precisamos disso?
-
Falta de Contexto Compilado: As ferramentas de IA veem apenas o código-fonte; elas não sabem como a rotina compilada final realmente é.
-
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. -
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.
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 / .
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
}
}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.
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.

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.
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.
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!
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"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.
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)
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.
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.
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.

Essa espera finalmente acabou.
O novo driver go-irisnative traz suporte a GoLang para o InterSystems IRIS, implementando a API padrão database/sql
Resumo
| Id do Alerta | Produto & Versões Afectadas | Categoria & Pontuação de Risco | Requisitos Explicitos |
| DP-449126 | InterSystems IRIS® data platform InterSystems IRIS® for Health InterSystems Health Connect™ versions 2024.1.0 – 2024.1.5, 2024.2.0, 2024.3.0, 2025.1.0 – 2025.1.3, 2025.2.0, 2025.3.0 |
Integridade de Dados: Baixo Risco | As atualizações de banco de dados executadas como parte de uma lógica personalizada para eventos de sessão CSP podem não ser registradas em diário (no journal). |
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.
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….
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.set("myGlobal", "hello world!")
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.
ClassClassMethodtryNo exemplo acima, se for menor que 1, um erro como o seguinte será exibido:
USER>Para mais informações, consulte a seguinte documentação:
ObjectScript command _THROW
Se você quiser criar um código de status arbitrário, faça o seguinte:

