#Dicas e truques

1 Seguidor · 74 Postagens

Pedaços da experiência tecnológica InterSystems que resolve algum problema específico de maneira elegante ou incomum.

Artigo Evandro Wendt · jan 12 2m read

Eu estava enfrentando o mesmo problema que o Jerry enfrentou ao conectar o IRIS ao SQL Server. Minha conexão ODBC está configurada para autenticar via autenticação do Windows.

Configure IRIS ODBC connection with Windows authentication using a
 

Como eu resolvi isso?

Causa raiz

  • O DSN do SQL Server estava configurado para Autenticação Integrada do Windows.
  • O IRIS abre a conexão ODBC via irisdb.exe, que é executado sob a conta de logon dos serviços do IRIS no Windows.
  • Meus serviços do IRIS estavam rodando como LocalSystem, então o SQL via a conta da máquina <ORGNAME>\<ASSETID>$. O SQL não

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


enlightened

0
0 29
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
0
0 27
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 24
Artigo Evandro Wendt · jan 2 2m read

Olá a todos.

Vou dar uma dica rápida sobre como implementar um agente de IA para realizar buscas na documentação da InterSystems integrado ao Teams.

Sim, eu sei que a página da documentação tem seu próprio buscador de IA e que ele é bastante eficaz, mas dessa forma teríamos um acesso mais rápido, especialmente se o Teams for a ferramenta corporativa da sua empresa.

Também é possível criar outro agente de IA para realizar buscas nos artigos publicados na comunidade de desenvolvedores (que também possui seu buscador de IA integrado).

0
0 24
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:

0
0 43
Artigo Heloisa Paiva · Out. 23, 2025 1m read

Olá a todos,

Esta é uma dica rápida sobre como usar URLs em serviços REST API sem distinção entre maiúsculas e minúsculas.

Se você tem uma classe que estende de %CSP.REST e Ens.BusinessService para criar um serviço REST API, e você definiu seu WebApplication em minúsculas:

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
    <Route Url="/user" Method="POST" Call="User"/>
    <Route Url="/login" Method="POST" Call="Login"/>
</Routes>
}

Ele só aceitará URLs em minúsculas, por exemplo: http://myserver/myproduction/user

Se houver qualquer caractere em ma

0
0 53
Artigo Heloisa Paiva · Out. 16, 2025 13m read

.

Estou muito emocionado de continuar com a minha série de artigos "InterSystems para Dummies", e hoje queremos contar tudo sobre uma das funções mais potentes que temos para a interoperabilidade.

Mesmo que já as tenha utilizado, planejamos analisar a fundo como aproveitá-las ao máximo e melhorar ainda mais nossa produção.

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

Ao revisar os diversos artigos que publiquei, percebi a necessidade de explicar uma funcionalidade muito prática em nosso EMPI (Enterprise Master Patient Index) que é a notificação de registros e vínculos para sistemas externos ao EMPI.

Essa funcionalidade é extremamente útil em uma ferramenta como o EMPI e, especialmente, em ambientes como o de saúde, nos quais é muito comum que o mesmo paciente tenha seus dados duplicados em diferentes sistemas, e no final seja necessário identificá-lo de forma única. A solução para reduzir esse amálgama de registros é fundir todos esses dados em um único r

0
0 39
Artigo Heloisa Paiva · Out. 12, 2025 2m read

Olá desenvolvedores!

Conhecem a IA da Comunidade? Se não, estão perdendo uma das melhores aplicações que nos trouxeram em 2024. E vocês devem se perguntar: o que é isso? É uma ferramenta muito intuitiva para obter respostas sobre a tecnologia InterSystems. 

Onde a encontro?

 


Ao lado direito da página, logo acima da coluna de eventos, onde há "Fazer uma pergunta a IA". Vamos seguir o passo a passo e vocês verão como é simples.

 

  • Uma vez dentro, vocês observarão que ainda está em fase beta. Nossos companheiros estão trabalhando em incluir manuais de suporte oficiais e incorporar o f

0
0 32
Artigo Danusa Calixto · Set. 17, 2025 3m read

Olá, pessoal! Tendo me integrado recentemente à InterSystems, percebi que, apesar de ter uma Edição Comunitária totalmente gratuita e incrível, não é muito claro como obtê-la. Decidi escrever um guia destacando todas as diferentes maneiras de acessar a Edição Comunitária do InterSystems IRIS:

Obtenha o InterSystems IRIS Community Edition como um contêiner

Trabalhar com uma instância em contêiner da Community Edition é a abordagem recomendada para quem está começando a desenvolver no InterSystems IRIS e, na minha opinião, é a mais simples. A Community Edition do InterSystems IRIS pode ser encontrada no DockerHub; se você tiver uma conta InterSystems SSO, também poderá encontrá-la no Registro de Contêineres da InterSystems.

Em ambos os casos, você vai querer extrair a imagem desejada usando o Docker CLI:

docker pull intersystems/iris-community:latest-em
// or
docker pull containers.intersystems.com/intersystems/iris-community:latest-em

Em seguida, você precisará iniciar o contêiner: para interagir com o IRIS de fora do contêiner (por exemplo, para usar o portal de gerenciamento), você precisará publicar algumas portas. O comando a seguir executará o contêiner IRIS Community Edition com as portas do superservidor e do servidor web publicadas; observe que você não pode executar nada que dependa das portas 1972 ou 52773!

docker run --name iris -d --publish 1972:1972 --publish 52773:52773 intersystems/iris-community:latest-em
0
0 106
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

0
0 40
Artigo Heloisa Paiva · Set. 4, 2025 2m read

Rubrica InterSystems FAQ

No InterSystems IRIS, você pode criar tabelas vinculadas usando comandos, ao invés de usar o caminho System Explorer > SQL > Wizard > Linked Tables do Portal de Administração:

Para criar uma tabela vinculada, use o método CreateLinkedTable da classe  %SYSTEM.SQL.Schema. Veja a documentação da classe para detalhes.

Para executar, siga os passos:

set sc = $SYSTEM.SQL.Schema.CreateLinkedTable("<dsn>","<Schema>","<Table>","<primaryKeys>","<localClass>","<localTable>","")

/// 1st argument: dsn - SQL Gateway connection name/// 2nd argument: Schema - Source schema 
0
0 24
Artigo Larissa Prussak · Ago. 29, 2025 1m read

InterSystems FAQ rubric

Existem dados, como registros de log de execução, que você pode não querer que voltem ao estado anterior mesmo se ocorrer um rollback durante uma transação.
Esse requisito pode ser atendido colocando esses dados no banco de dados IRISTEMP, que não sofre rollback.

Temporary Globals and the IRISTEMP Database

Ao mapear para esse banco as entidades de tabela que você não deseja que sofram rollback, é possível manter as informações após a reversão.

No entanto, o conteúdo desse banco será apagado quando o IRIS for reiniciado. Portanto, se você quiser preservar esses dado

0
0 28
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 · Jun. 29, 2025 3m read

Talvez isso já seja bem conhecido, mas quis compartilhar para ajudar.

Considere que você tem as seguintes definições de classes persistentes:

Uma classe Invoice (Fatura) com uma propriedade de referência para Provider (Prestador de serviço):

Class Sample.Invoice Extends (%Persistent, %Populate)
{
Parameter DSTIME = "AUTO";Property InvoiceNumber As%Integer(MINVAL = 100000) [ Required ];Property ServiceDate As%Date(MINVAL = "+$h-730") [ Required ];
Index InvoiceNumber On InvoiceNumber;Property Provider As Sample.Provider [ Required ];
Index Provider On Provider [ Type = bitma




0
0 56
Artigo Heloisa Paiva · Maio 15, 2025 14m read

 

Como todos sabemos, a InterSystems é uma ótima empresa.

Seus produtos podem ser tão úteis quanto complexos.

No entanto, nosso orgulho às vezes nos impede de admitir que talvez não entendamos alguns conceitos ou produtos que a InterSystems nos oferece.

Hoje estamos começando uma série de artigos explicando como alguns dos intrincados produtos da InterSystems funcionam, obviamente de forma simples e clara.

Neste ensaio, irei esclarecer o que é Machine Learning e como tirar proveito dele... porque desta vez, VOCÊ VAI SABER com certeza do que estou falando.

0
0 53
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
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 46
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 201

1
1 124
Artigo Heloisa Paiva · Dez. 9, 2024 1m read

A capacidade de reenviar mensagens sempre foi um dos destaques das nossas funcionalidades de interoperabilidade.

Com a versão 2024.3, que será lançada em breve (já disponível como prévia para desenvolvedores), tornamos esse processo ainda mais simples!

0
0 64
Artigo Heloisa Paiva · Nov. 10, 2024 1m read

Rubrica InterSystems FAQ 

Isso pode ser obtido com uma query de lista da classe %SYS.Namespace

1. Crie uma rotina assim:

getnsp
   set statement=##class(%SQL.Statement).%New()
   set status=statement.%PrepareClassQuery("%SYS.Namespace","List")
   set resultset=statement.%Execute()
   while resultset.%Next() {
       write resultset.%Get("Nsp"),!
   }
   quit

2. Rode no seu terminal

USER>do ^getnsp
%SYS
DOCBOOK
SAMPLES
USER

O método de executar queries de classe introduzido nesse artigo pode ser aplicado em uma variedade de classes

Você pode ver várias queries de classe na referência

0
0 45
Artigo Heloisa Paiva · Out. 10, 2024 2m read

Olá comunidade!

Eu trago aqui uma dica para poupar algumas horas do seu dia. A documentação InterSystems especifica muito bem como criar um script de freeze para as instâncias, mas não traz exemplos em instâncias espelhadas, onde queremos deixar o script automático, mas só rodar efetivamente na instância primária.

Primeiro, vamos criar uma classe abstrata no namespace %SYS com métodos que verificam se a instância é primária e, caso positivo, executam o freeze.

Class User.custom.FreezeThaw.Script [ Abstract ]
{

ClassMethod FreezeIfPrimary() As%Status
{
    Set tSC = $$$OKT
0
0 66
Artigo Heloisa Paiva · Set. 30, 2024 1m read

Tem um jeito fácil de adicionar um certificado (CA - certificate authority) às suas configurações no InterSystems IRIS 2019.1 (e 2018.1.2) no Windows e Mac. Você pode pedir para o IRIS usar a loja de certificados do sistema operacional usando:

%OSCertificateStore

no campo "File containing Trusted Certificate Authority X.509 certificate(s)". Aqui está uma imagem de como fazer isso no portal:

E aqui está um  link para a documentação que descreve isto. Está na lista de opções abaixo de  "File containing trusted Certificate Authority certificate(s)".

Isso é tudo que você precisa fazer! Agora

0
0 69
Artigo Heloisa Paiva · Set. 16, 2024 1m read

[FAQ] Preguntas frecuentes de InterSystems

O seguinte código baixa https://www.intersystems.com/assets/intersystems-logo.png e salva o arquivo como c:\temp\test.png.

É necessário definir uma configuração SSL chamada SSLTEST antes de executar esse código

ClassMethod download() As%Status
{
    Set sc = $$$OKSet httprequest=##class(%Net.HttpRequest).%New()
    set httprequest.Port = 443set httprequest.Https = 1set httprequest.SSLConfiguration = "SSLTEST"Set httprequest.Server="www.intersystems.com"Do httprequest.Get("/assets/intersystems-logo.png")
    Set ht
0
0 42
Artigo Heloisa Paiva · Set. 10, 2024 8m read
Propósito deste artigo

Tem dois ótimos artigos WRC de melhores práticas Mensagens Órfãs do Ensemble | Comunidade de Desenvolvedores InterSystems | Melhores
e a postagem sobre a ajuda de eliminação DeleteHelper - Uma classe para ajudar a deletar Classes Persistentes Referenciadas que tratam de registros órfãos e como lidar com eles. Esse artigo não tem a intenção de substituir esses escritos por profissionais da InterSystems, mas construir em cima deles e como podemos usar ambos com confiança e ajudar a manter nossa base de dados num tamanho mais compacto usando essa informação e outras discuss


0
0 67
Artigo Heloisa Paiva · Set. 4, 2024 7m read

Como parte do concurso IRIS Python 2024, meu colega Damir e eu tivemos uma ideia de onstruir uma plataforma chamada ShelterShare para conectar vítimas e voluntários para requisições de abrigo. Para isso, escolhemos Django como uma framework e procedemos para construir a primeira versão ccom 3 docker containers diferentes, django, iris e nginx, que iriam então utilizar o IRIS puramente como uma máquina de base de dados pelo muito bem composto django_iris (cumprimentos ao Dimitry). Como progredimos rápido, decidimos explorar a opção de rodar ele dentro do mesmo container que o IRIS utilizando o 




0
0 64