#Ensemble

1 Seguidor · 107 Postagens

InterSystems Ensemble é uma plataforma completa e fácil de usar que permite aos usuários conectarem pessoas, processos e aplicações em tempo recorde.

Saber mais

Documentação

Artigo Heloisa Paiva · Fev. 12 6m read

image1

Alguns conceitos fazem todo sentido no papel, enquanto outros exigem que você coloque a mão na massa.
Veja dirigir, por exemplo. Você pode memorizar cada componente da mecânica do motor, mas isso não significa que você realmente saiba dirigir.

Você só consegue compreender de verdade quando está no banco do motorista, sentindo fisicamente o ponto de fricção da embreagem e a vibração da estrada sob você.
Embora alguns conceitos de computação sejam intuitivos, Agentes Inteligentes são diferentes. Para entendê-los, você precisa sentar no banco do motorista.

Em meus artigos anteriores sobre agentes

2
0 19
Novo
Artigo Heloisa Paiva · Fev. 17 3m read

Utilizamos o JDBC Gateway do Caché para servidores Oracle e SQL para invocar diretamente seus stored procedures a partir do Ensemble. A obtenção de resultados de dados rápidos e em linha é normalmente tratada dentro da classe Functions.Library como uma função para envolver a consulta e formatar o retorno adequadamente.

Mas e quanto a stored procedures mais elaborados, feitos para postar dados sem congestionar um Router?As operações para construir esses pipelines de dados podem se tornar cansativas, especialmente quando mudanças são necessárias.

0
0 6
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 6 2m read

A utilidade retorna os valores desejados do texto e exibe múltiplos valores, se existirem, com base na string de início e na string de término.

Class Test.Utility.FunctionSet Extends %RegisteredObject
{

/// W !,##class(Test.Utility.FunctionSet).ExtractValues("Some random text VALUE=12345; some other VALUE=2345; more text VALUE=345678;","VALUE=",";")
 

ClassMethod ExtractValues(text As %String, startStr As %String, endStr As %String) As %String
{    //Initialize Valriables
   Set values = ""
   Set start = 1
   
   While start '= 0 {
 Set start = $FIND(text, startStr, start)
 IF start = 0 QUIT }
     Set

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

Para excluir apenas a global no

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

USER>kill^test
USER>for i=1:1:100 { forj=1:1:7 { set^test(i,j)="Test"_i } }
 
USER>zn"samples"// change namespace to SAMPLES
SAMPLES>kill^test
SAMPLES>for i=1:1:100 { forj=1:1:7 { set^test(i,j)="Test"_i } }
 
SAMPLES>set^test(50,5
0
0 27
Artigo Evandro Wendt · jan 4 1m read

Este código fornece os itens de produção configurados com status habilitado ou desabilitado.

Include (Ensemble, EnsUI, EnsUtil)

Class Test.ProductionConfig
{

ClassMethod GetConfigItems() As %Status
{
Set tStatement = ##class(%SQL.Statement).%New()
Set tSC = tStatement.%PrepareClassQuery("Ens.Config.Production","EnumerateConfigItems")
Write tSC,!
Write "ConfigItemName"," ","Enabled",!
#Dim exp As %Exception.SystemException
#Dim rset As %SQL.StatementResult
Set rset = tStatement.%Execute()
Write rset,!
Write rset.%SQLCODE,!
While rset.%Next() {
Try {
Set tConfigName = rset.%GetData(1)
Set tEnabled = rset.%GetDa

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

O lançamento inicial foca em dois aspectos da configuração do servidor:

  • Namespaces e bancos de dados
  • Conectividade ECP

Sugestões sobre o que adicionar a seguir são

0
0 32
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?

A utilidade ObjectScript

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

Você provavelmente conhece essa situação:

Algum tempo atrás, você encontrou uma função $ZU muito especial para um tipo de problema bem específico. Uma espécie de fórmula mística. Ela se tornou popular e foi usada por muitos desenvolvedores em todo o seu código e em todas as suas instalações.

Depois de várias versões e atualizações, você é informado pela ISC de que seu $ZU místico está obsoleto (deprecated) e não é mais suportado. Você é aconselhado a substituí-lo por um novo $something().

Então, como encontrar e documentar o uso desse código misterioso?
Ele pode estar localizado em classes, em

0
0 28
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 37
Artigo Heloisa Paiva · Nov. 13, 2025 2m read

Rubrica de FAQ da InterSystems

Ao exportar usando o método Export() da classe %Library.Global, se o formato de exportação (quarto argumento: OutputFormat) for definido como 7, "Block format/Caché block format (%GOF)", os globais mapeados não podem ser exportados (apenas os globais no banco de dados global padrão do namespace são exportados). Para exportar globais mapeados no formato "Block format/Caché block format (%GOF)", especifique o diretório do banco de dados para o qual você deseja mapeá-los no primeiro parâmetro de %Library.Global.Export().

Um exemplo de execução é mostrado abaixo:

 set
0
0 43
Artigo Heloisa Paiva · Out. 19, 2025 14m read

Visão Geral

Esta interface web foi projetada para facilitar o gerenciamento de Tabelas de Pesquisa de Dados (Data Lookup Tables) por meio de uma página web amigável. É particularmente útil quando os valores da sua tabela de pesquisa são grandes, dinâmicos e mudam frequentemente. Ao conceder aos usuários finais acesso controlado a esta interface web (permissões de leitura, escrita e exclusão limitadas a esta página), eles podem gerenciar os dados da tabela de pesquisa de forma eficiente, de acordo com suas necessidades.

Os dados gerenciados por meio desta interface podem ser utilizados perfeitamente em regras ou transformações de dados do HealthConnect, eliminando a necessidade de constante monitoramento e gerenciamento manual das tabelas de pesquisa, economizando tempo significativo.

Nota: 

Se a Tabela de Pesquisa de Dados padrão não atender aos seus requisitos de mapeamento, você pode criar uma tabela personalizada e adaptar esta interface web, juntamente com sua classe de suporte, com modificações mínimas. O código de exemplo da classe está disponível mediante solicitação.

0
0 42
Artigo Heloisa Paiva · Out. 17, 2025 3m read

Para gerenciar o acúmulo de dados de produção, o InterSystems IRIS permite aos usuários controlar o tamanho do banco de dados eliminando (expurgando) periodicamente os dados. Esta purga pode ser aplicada a mensagens, registros, processos de negócio e alertas gerenciados.

Consulte a documentação para obter mais detalhes sobre a configuração da tarefa de expurgo:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG_purge#EGMG_purge_settings

Um problema com o qual muitos usuários se deparam é continuar vendo mensagens antigas depois de executar a tarefa de purga de

0
0 29
Artigo Heloisa Paiva · Out. 9, 2025 3m read

Quando precisamos integrar o Caché/IRIS com outros bancos de dados relacionais, uma pergunta comum surge: “Como configuro a conexão JDBC?”. A documentação oficial nem sempre fornece um guia passo a passo direto, o que pode ser frustrante, especialmente para iniciantes.

Neste artigo, vou guiá-lo por todo o processo de configuração de uma conexão JDBC com MySQL, desde o download do conector até o espelhamento de tabelas no Caché/IRIS.

Nota: Conexões JDBC no Caché/IRIS têm algumas limitações, especialmente em relação ao caching e ao uso de ResultSet. Em muitos casos, você pode precisar adaptar

0
0 44
Artigo Heloisa Paiva · Set. 16, 2025 3m read

Começar a usar ObjectScript é realmente empolgante, mas também pode parecer um pouco estranho se você está acostumado com outras linguagens. Muitos iniciantes tropeçam nos mesmos obstáculos, então aqui estão alguns "pegadinhas" que você vai querer evitar. (Além de algumas dicas amigáveis para contorná-las.)


Nomear Coisas Aleatoriamente

Todos nós já fomos culpados de nomear algo como Test1 ou MyClass apenas para seguir em frente rapidamente. Mas quando seu projeto cresce, esses nomes se tornam um pesadelo.

➡  Escolha nomes claros e consistentes desde o início.

0
0 54
Artigo Heloisa Paiva · Set. 9, 2025 3m read

Rubrica InterSystems FAQ

Você pode verificar o espaço em disco a qualquer momento usando a classe utilitária do sistema: SYS.Database e a consulta: FreeSpace.

Aqui está como testar no terminal IRIS (vá para o namespace %SYS e então execute):

zn"%SYS"set stmt=##class(%SQL.Statement).%New()
set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
set rset=stmt.%Execute()
do rset.%Display()

O exemplo de resultado de saída é o seguinte:

*No exemplo de execução do comando, todos os bancos de dados estão localizados no mesmo disco, então o espaço livre em disco (DiskFreeSpace) retorna o mesmo

0
0 42
Artigo Heloisa Paiva · Set. 6, 2025 1m read

Rubrica InterSystems FAQ

O mirror sincroniza apenas arquivos de banco de dados.

Para sincronizar outros arquivos necessários para sua aplicação (arquivos CSP, imagens, documentos, etc.) entre os dois servidores que compõem o conjunto de espelhamento, siga uma das seguintes abordagens:

  1. Coloque esses arquivos em um disco compartilhado, usando um NAS ou dispositivo similar.
  2. Ou use um software de sincronização de arquivos para sincronizá-los entre os dois servidores.
0
0 27
Artigo Larissa Prussak · Ago. 29, 2025 1m read

InterSystems FAQ rubric

Por padrão, a ordem das colunas em uma tabela é determinada automaticamente pelo sistema.
Para alterar a ordem, defina explicitamente a ordem de cada propriedade utilizando a palavra-chave SqlColumnNumber ao definir a classe.

Exemplo:

Property Name As %String [SqlColumnNumber = 2];

Consulte a documentação abaixo.

SqlColumnNumber

Se você deseja alterar o nome da tabela SQL, especifiqueSqlTableName. Se você deseja alterar o nome da coluna (nome do campo), especifiqueSqlFieldName.

Ambos se aplicam apenas a classes persistentes.

0
0 22
Artigo Larissa Prussak · Jul. 24, 2025 2m read

Se você está investigando Globals estruturadas complexas, isso pode facilmente se tornar um exercício cansativo de digitação.
Diferente do Global Explorer no System Management Portal, o Global-Inspector permite um tipo de navegação aprofundada (drill-down), permitindo explorar nível por nível dos subscritos. Você também tem a opção de visualizar o conteúdo armazenado ou mostrar apenas a estrutura de subscritos. Globals que armazenam tabelas SQL podem não ser tão interessantes, mas no espaço SYSTEM, você encontrará verdadeiras árvores com ramos e ramificações completamente diferentes.

Global-Insp

2
0 43
Artigo Henry Pereira · Ago. 3, 2025 5m read

artisan cover

Se você já viu um artesão em ação — seja um ceramista moldando o barro até virar arte ou um luthier transformando madeira bruta em um violão extraordinário — sabe que a mágica não está nos materiais, e sim no cuidado, na técnica e no processo. Tenho uma guitarra feita por um luthier que me inspira todos os dias. Mas, vou confessar, criar algo assim é um talento que não tenho.

Por outro lado, no digital, vejo muita gente esperando essa mesma “mágica” de uma IA generativa...prompts genéricos como “crie um app” e esperando resultados espetaculares.

2
0 41
Artigo Heloisa Paiva · Abr. 4, 2025 1m read

Rubrica de Perguntas Frequentes (FAQ) da InterSystems

As configurações padrão para Stay Connected e Pool Size para hosts de negócios que usam o adaptador TCP são as seguintes:

StayConnected = -1(no timeout)
PoolSize = 1

Se um problema de rede causar a perda de conexão com um host de negócios, o lado da produção não conseguirá detectar isso e não aceitará novas conexões.Nessa situação, nenhum evento é registrado no log de eventos.

0
0 27
InterSystems Oficial Danusa Calixto · Mar. 26, 2025 5m read

A interface de usuário de interoperabilidade agora inclui experiências de usuário modernizadas para os aplicativos Editor DTL e Configuração da Produção que estão disponíveis para aceitação em todos os produtos de interoperabilidade. Você pode alternar entre as visualizações modernizada e padrão. Todas as outras telas de interoperabilidade permanecem na interface de usuário padrão. Observe que as alterações são limitadas a esses dois aplicativos e identificamos abaixo a funcionalidade que está disponível atualmente.

Para experimentar as novas telas antes de atualizar, você pode baixar a versão

0
0 59
Artigo Danusa Calixto · Mar. 21, 2025 1m read

Rubrica de FAQ da InterSystems
 

Pode ser feito com o TRY-CATCH:

#dim ex As%Exception.AbstractExceptionTRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

Se você usar o ^%ETN, chame-o a partir do bloco BACK (BACK^%ETN).

Por favor, dê uma olhada também no artigo relacionado: Como buscar erros de aplicação (^ERRORS) usando um comando

0
0 47
InterSystems Oficial Danusa Calixto · Mar. 7, 2025

A partir da plataforma de dados InterSystems IRIS® versão 2025.1, a InterSystems está oficialmente descontinuando o MultiValue e incluindo-o na lista de Recursos Descontinuados e Obsoletos. Embora a InterSystems continue a oferecer suporte aos clientes existentes que usam o MultiValue, ele não é recomendado para novos aplicativos.

O Que Isso Significa:

  • Suporte Contínuo: O suporte para MultiValue ainda estará disponível por meio do Worldwide Response Center (WRC) em uma base de "melhor esforço", como é fornecido para lançamentos mais antigos do que nossas Versões Mínimas Suportadas.
  • Possibilid
0
0 31
Artigo Heloisa Paiva · Fev. 23, 2025 1m read

Rubrica de Perguntas Frequentes da InterSystems

Para executar SQL no Terminal, use $system.SQL.Shell().

Por favor, consulte o exemplo abaixo.

SAMPLES>do $System.SQL.Shell()
SQL Command Line Shell
---------------------------------------------------- The command prefix is currently set to: <>.
Enter q to quit, ? for help.
SAMPLES>>select * from Sample.Vendor
1. select * from Sample.Vendor Vendor Balance Contact DaysClear DiscDays DiscRate LastInvDate LastPayDate MinPayment Name NetDays PayFlag TaxReportingAddress_City Address_State Address_Street Address_Zip
: *If you press Enter without entering
0
0 47
Artigo Heloisa Paiva · Fev. 19, 2025 7m read


Olá!

Este artigo é uma pequena visão geral de uma ferramenta que ajuda a entender classes e sua estrutura dentro dos produtos InterSystems: do IRIS ao Caché, Ensemble e HealthShare.

Em resumo, ela visualiza uma classe ou um pacote inteiro, mostra as relações entre as classes e fornece todas as informações possíveis para desenvolvedores e líderes de equipe sem fazê-los ir ao Studio e examinar o código lá.

Se você está aprendendo os produtos InterSystems, revisando muitos projetos ou apenas interessado em algo novo nas soluções de tecnologia InterSystems - você é mais do que bem-vindo para ler a visão geral do ObjectScript Class Explorer!

0
0 89
Artigo Heloisa Paiva · Fev. 3, 2025 3m read

Variáveis de host são um recurso de programação bastante comum em muitas implementações de SQL.
Uma pergunta recente no DC me alertou para o fato de que, no IRIS, Caché, Ensemble, ... variáveis de host existem apenas dentro do SQL incorporado:

>  Você pode fornecer variáveis de host apenas para consultas SQL incorporadas.  <

Exemplos relacionados estão incluídos na documentação disponível.

Esta é uma descrição de uma solução alternativa caso você não use/não possa usar SQL incorporado.

1
0 43
Artigo Danusa Calixto · Dez. 22, 2023 2m read

Rubrica de perguntas frequentes da InterSystems

Para resolver o erro <PROTECT>, remova o atributo somente leitura do banco de dados da biblioteca de todo o sistema (IRISLIB para InterSystems IRIS, CACHELIB para Caché/Ensemble/HealthShare (baseado em Caché))

Quando terminar de importar a rotina, lembre-se de alterá-la novamente para somente leitura.
 

[Versão 2013.1 e acima]
[Portal de Gerenciamento] > [Administração do Sistema] > [Configuração] > [Configuração do Sistema] > [Banco de Dados Local] Desmarque "Mount read-only" (Montar somente leitura) no link do nome do banco de dados.

[Versão 2011.1

1
1 124