Limpar filtro
Pergunta
Jose Lazarete · Set. 8, 2021
Olá pessoal, tudo bem?
Estou com uma mensagem de alerta no portal do IAM, informando que a licença está prestes a expirar em alguns dias. Acredito que essa licença não tem ligação com a licença do IRIS, já que a licença IRIS vencerá com outra data.
Além da licença IRIS há a necessidade de adquirir uma licença junto ao Kong?
- IAM versão: iam:2.3.3.2-1
Tudo bem José?
A licença do IRIS possui um trecho onde está contida a licença do IAM, entretanto a validade é distinta da validade da licença do IRIS. Para solicitar uma nova licença do IRIS com a validade da licença do IAM atualizada você precisa entrar em contato com o Account Manager da InterSystems responsável.
Abraço Tudo jóia Angelo.
Grato pelo retorno e esclarecimentos.
Anúncio
Danusa Calixto · Abr. 9
Olá Comunidade,
É hora do novo lote de #Perguntas-Chave do mês anterior.
Aqui estão as principais perguntas de março escolhidas pelos especialistas da InterSystems em todas as comunidades:
📌 Message Count por @Farman.Ullah2607 (EN)
📌 Walking a virtual document's structure por @Colin.Brough (EN)
Essas perguntas serão destacadas com a tag #Pergunta Principal e seus autores receberão o emblema de Key Question no Global Masters.
Se você achar a(s) pergunta(s)-chave de outras comunidades interessante(s), deixe-nos uma mensagem nos comentários e traduziremos a(s) pergunta(s) e a(s) resposta(s) aceita(s).
Parabéns e obrigado a todos pelas perguntas interessantes. Continuem enviando!
Vejo vocês no mês que vem 😉
Pergunta
Paulo Mauri · Abr. 7
Pessoal,
Poderia me informar se na plataforma InterSystems IRIS, existe uma ferramenta de trace de execução de comandos SQL, procedures entre outros, semelhante ao SQL Profiler?
Grato, Boa tarde Paulo,
Existem sim algumas ferramentas que você pode usar para guardar essas execuções.Na auditoria você pode ligar a gravação de execução de queryes via JDBC e dynamic queryes, mas, isso só vai trazer as consultas executadas, se você quer informações mais detalhadas pode ver nessa documentação: https://docs.intersystems.com/irisforhealth20241/csp/docbook/Doc.View.cls?KEY=GSOE_profile#GSOE_profile_statsset. Qual seria a sua versão do IRIS? Bom dia,
Versão do IRIS 2024.1 Boa tarde!,
Chegou a ver a documentação que te passei?
Artigo
Cristiano Silva · Abr. 27, 2023
InterSystems FAQ rubric
Neste artigo, apresentaremos como lidar com a situação: "Excluí acidentalmente uma global!"
Arquivos de backup e journals são usados para recuperar globais específicas que foram excluídas acidentalmente. A restauração é executada especificando as condições e restaurando registros do journal usando o utilitário ^ZJRNFILT. Dessa forma, você pode aplicar um backup pontual do banco de dados e até incluindo a exclusão de uma global específica para registros do journal que contêm as exclusões. Para obter mais informações sobre o utilitário ^ZJRNFILT, consulte a documentação:
Filter Journal Records Using ^ZJRNFILT [IRIS]Filter Journal Records Using ^ZJRNFILT
【Exemplo】
- Existe um backup de 14/10/2020 (assumindo que o backup foi executado em 15/10/2020 00:30) Journal: 1 dia de 15/10/2020 existe (15/10/2020) Após o backup do dia14/10)・Global alvo: ^TEST1
A imagem está abaixo.
Global ^TEST1 será preenchida a partir de 14/10.A global ^TEST1 foi excluída acidentalmente com uma instrução KILL às 15:30 do dia 15 de Outubro.Neste estágio, queremos restaurar a global ^TEST1 imediatamente antes do KILL.No exemplo, ^TEST1(1) a ^TEST1(100) são restaurados usando o journal da global criado pelos comandos abaixo.
USER>for i=1:1:100 set ^TEST1(i)=$ZTIMESTAMPUSER>for i=1:1:100 set ^TEST2(i)=$ZTIMESTAMPUSER>kill ^TEST1 // ← Processando até aqui para recuperar usando o arquivo de journal para a global ^TEST1
[Procedimento de Restauração]
Fazer backup/restauração ou copiar (montar) arquivos de banco de dados de backup (CACHE.DAT/IRIS.DAT) para outro sistema
Copie os journals após a resturação do backup para outro sistema
Identificar os registros do journal para o comando kill do último arquivo de journal
Observação1: Visualizar os registros do journal no Portal de Administração ( Portal de Gerenciamento > [Operações do Sistemas] > [Arquivos de Journals] > clique no link [Exibir] para o arquivo específico) (Para o exemplo exibido, o deslocamento do registro do journal para o comando KILL é 9060180)
Observação 2: Você também pode verificar os registros do journal usando a rotina do sistema SELECT^JRNDUMP.
Restaure os arquivos de journal em ordem, apenas as globais a serem restauradas estão OK.
Para o último arquivo use o utilitário ZJRNFILT
Exporte a global recuperada, copie e importe para o sistema original
Abaixo o código de exemplo da rotina ZJRNFILT utilizada no 5º passo(deve ser criada no namespace %SYS com o nome ZJRNFILT ).
ZJRNFILT (pid,dir,glo,type,restmode,addr,time)
set restmode =1
// If TEST1 is included in the global variable name
// and the journal record is 9060180 or later, set restmode=0 (=do not restore)
if ( glo [ "TEST1" ) & ( addr >=9060180) {
set restmode =0
}
quit
Abaixo exemplo da restauração do último arquivo de journal usando ZJRNFILT (as entradas estão em letras azuis em negrito).
%SYS>do ^JRNRESTO
This utility uses the contents of journal files
to bring globals up to date from a backup.
Restore the Journal? Yes => Yes
Use current journal filter (ZJRNFILT)? yes
Use journal marker filter (MARKER^ZJRNFILT)? no
Apply filter to every selected file? Yes => yes
Process all journaled globals in all directories? no
Are journal files imported from a different operating system? No => no
Directory to restore [? for help]: c:\intersystems\hscv\mgr\user\ c:\intersystems\hscv\mgr\user\
Redirect to Directory: c:\intersystems\hscv\mgr\user\
=> c:\intersystems\hscv\mgr\user\--> c:\intersystems\hscv\mgr\user\
Process all globals in c:\intersystems\hscv\mgr\user\? No => no
Global ^TEST1
Global ^
Directory to restore [? for help]:
Processing globals from the following datasets:
1. c:\intersystems\hscv\mgr\user\ Selected Globals:
^TEST1
Specifications correct? Yes => yes
Are journal files created by this IRIS instance and located in their original
paths? (Uses journal.log to locate journals)? no
If you have a copy of the journal history log file from the Cache or IRIS
instance where the journal files were created, enter its full path below;
otherwise, press ENTER and continue.
Journal history log:
Specify range of files to process (names in YYYYMMDD.NNN format)
from: <20201012.002> [?] => 20201015.001
through: <20201015.001> [?] =>
Provide or confirm the following configuration settings:
Journal File Prefix: [?] =>
Files to dejournal will be looked for in:
c:\intersystems\hscv\mgr\journal\
in addition to any directories you are going to specify below, UNLESS
you enter a minus sign ('-' without quotes) at the prompt below,
in which case ONLY directories given subsequently will be searched
Directory to search: <return when done>
Here is a list of directories in the order they will be searched for files:
c:\intersystems\hscv\mgr\journal\
Prompt for name of the next file to process? No => no
The following actions will be performed if you answer YES below:
* Listing journal files in the order they will be processed
* Checking for any missing journal file on the list ("a broken chain")
The basic assumption is that the files to be processed are all
currently accessible. If that is not the case, e.g., if you plan to
load journal files from tapes on demand, you should answer NO below.
Check for missing journal files? Yes => no
You may disable journaling of updates for faster restore for all
databases other than mirrored databases. You may not want to do this
if a database to restore is being shadowed as the shadow will not
receive the updates.
Do you want to disable journaling the updates? Yes => yes
Updates will NOT be journaled
Before we job off restore daemons, you may tailor the behavior of a
restore daemon in certain events by choosing from the options below:
DEFAULT: Continue despite database-related problems (e.g., a target
database is not journaled, cannot be mounted, etc.), skipping affected
updates
ALTERNATE: Abort if an update would have to be skipped due to a
database-related problem (e.g., a target database is not journaled,
cannot be mounted, etc.)
DEFAULT: Abort if an update would have to be skipped due to a
journal-related problem (e.g., journal corruption, some cases of missing
journal files, etc.)
ALTERNATE: Continue despite journal-related problems (e.g., journal
corruption, some missing journal files, etc.), skipping affected updates
Would you like to change the default actions? No => no
Start the restore? Yes => yes
c:\intersystems\hscv\mgr\journal\20201015.001
100.00%
***Journal file finished at 15:43:05
[journal operation completed]
Do you want to delete your journal filter? yes
Journal filter ZJRNFILT deleted
%SYS>
Ao fazer a restauração de uma global o journal , **por segurnaça** nós recomendamos que seja feita uma replicação da base de dados e dos arquivos de journal em ou outro ambiente que não seja o de produção. Para então, exportar a global restaurada e transferir (copiar) no ambiente de produção.
Para detalhes das mensagens exibidas durante a restauração do arquivo de journal, consulte a documentação
Artigo
Larissa Prussak · Jul. 3
Fazendo Profiling de Documentos CCD com o CCD Data Profiler da LEAD North
Já abriu um CCD e foi recebido por uma parede de XML confuso? Você não está sozinho. Apesar de ser um formato essencial para a troca de dados clínicos, os CCDs são notoriamente densos, verbosos e pouco amigáveis à leitura humana. Para desenvolvedores e analistas que tentam validar sua estrutura ou extrair informações significativas, navegar por esses documentos pode parecer mais arqueologia do que engenharia.
Apresentando o CCD Data Profiler
O CCD Data Profiler da LEAD North é uma ferramenta full stack construída com a tecnologia da InterSystems que simplifica a importação, o processamento, a validação e a exportação de dados de CCD. Voltada para desenvolvedores da área de saúde e analistas de dados, ela oferece uma solução ponta a ponta para controle de qualidade, verificação de completude de dados e validação de interoperabilidade.
Principais Funcionalidades
Opções flexíveis de importação:Carregue arquivos CCD locais ou recupere documentos diretamente de um repositório, com seleção personalizável das seções que deseja incluir antes de cada execução.
Profiling configurável:Escolha exatamente quais seções do CCD deseja analisar (ex.: Alergias, Medicamentos, Problemas) por meio do módulo de configurações de importação disponível na página inicial.
Relatórios interativos:A página de Relatórios exibe todos os dados encontrados nos seus documentos! Expanda qualquer seção para examinar os valores de cada campo individualmente e identificar elementos ausentes, que ficam destacados em cinza para rápida inspeção visual.
Exportação para planilhas e anonimização:Exporte os resultados para uma planilha, com as seções selecionadas pelo usuário e a opção de anonimizar campos de informações pessoais de saúde (PHI) (observação: essa funcionalidade auxilia, mas não garante a remoção completa de PHI).
Gerenciamento dinâmico de XSLT:Na página de Configuração, edite e teste fragmentos de XSLT diretamente no navegador. Modifique expressões XPath em tempo real e visualize o resultado da extração em CCDs de exemplo!
Instalação e Configuração
O profiler oferece suporte tanto para implantação manual quanto para instalação via pacote.Para instruções completas, consulte o repositório no GitHub:
https://github.com/LEADNorthLLC/External-CCDProfiler
Licenciamento
O CCD Data Profiler é open source e disponibilizado as-is sob a Licença MIT.
OBSERVAÇÃO: Esta aplicação não é oficialmente suportada pela InterSystems Corporation.Para entrar em contato com a LEAD North, parceiro estratégico de implementação da InterSystems, visite o site: www.leadnorthllc.com.
Anúncio
Angelo Bruno Braga · Mar. 3, 2022
Esta postagem é parte do processo de comunicação de alertas do HealthShare HS2022-01. Esta mesma informação também é distribuída:
Por Email
Na página de Alertas e avisos de Produtos
Na página de Distribuição do WRC da InterSystems de Documentos
Existem 22 alertas na comunicação de alertas do HealthShare HS2022-01. O Resumo dos alertas está na tabela abaixo e os detalhes estão contidos no documento anexado: HS2022-01-Communication
Alerta
Produto & Versões Afetadas
Categoria de Risco
HS2022-01-01: Datas de Vacinação alteradas em algumas circunstâncias
Todas as versões do:
Information Exchange
Unified Care Record
Personal Community
HealthShare Health Connect
InterSystems IRIS for Health
OperacionalClínico Segurança
HS2022-01-02: Tratamento inválido de vários intervalos de referência nos documentos CDA e C-CDA
Todas as versões do:
Information Exchange
Unified Care Record (até 2021.1)
Clínico Segurança
HS2022-01-03: Verificação de Segurança para Acesso de Emergência aos Registros do Paciente falha em algumas situações
Todas as versões do:
Information Exchange
Unified Care Record (até 2020.2)
Privacidade
HS2022-01-04: Vulnerabilidade de Segurança no Unified Care Record 2020.2.0
Unified Care Record:
2020.2.0 (Build 8620)
Privacidade
HS2022-01-05: Clientes com Unified Care Record 2020.2 e 2021.1 devem instalar um Patch antes de atualizar para uma versão posterior
Versões 2020.2, 2021.1 do:
Unified Care Record
Clinical Viewer
Health Insight
Patient Index
Personal Community
Care Community
Versões 2020.2, 2021.1, 2021.2, 2021.3 do:
Provider Directory
Operacional
HS2022-01-06: A configuração do Clinical Viewer Clássico demanda Requires solução desatualizada de terceiros
Todas as versões do:
Unified Care Record (Clinical Viewer Clássico apenas)
Segurança
HS2022-01-07: Usuários podem não conseguir sair do Clinical Viewer
Todas as versões do:
Information Exchange
Unified Care Record (até 2020.2)
Privacidade
HS2022-01-08: O cache de agregação do Gateway de Acesso cresce ao longo do tempo
Unified Care Record:
2020.1, 2020.2, 2021.1, 2021.2
Operacional
HS2022-01-09: Incompatibilidade nas customizações do HL7toSDA3 durante a atualização para o HealthShare 15.03 ou mais recente
Information Exchange:
15.03 ou mais recente (durante a atualização para o Unified Care Record)
Não avaliado
HS2022-01-10: Endpoints IHE devem utilizar credenciais apropriadas
All versions of:
Information Exchange
Unified Care Record
Segurança
HS2022-01-11: Reativação do namespace ODS pode resultar em tempo de indisponibilidade prolongado
Unified Care Record:
2019.1, 2019.2
Operacional
HS2022-01-12: Atualização do ODS pode necessitar de intervenção manual para completar
Unified Care Record:
2020.1 (quando atualizando para 2020.2)
Operacional
HS2022-01-13: Dados de auditoria do ODS inacessível depois de atualização para a versão 2020.1
Unified Care Record:
2019.1 ou 2019.2 (quando atualizando para 2020.1)
Privacidade
HS2022-01-14: Políticas de Consentimento no âmbito do sistema e a nível de instalação ignora as datas de eventos
Todas as versões do:
Information Exchange
Unified Care Record (até 2021.1)
Privacidade
HS2022-01-15: Requisições FHIR não estão tendo o consentimento avaliado de forma própria
Unified Care Record:
2020.1
Privacidade
HS2022-01-16: Operações FHIR “$everything” podem estar retornando dados demográficos não consentidos
All versions of:
Information Exchange
Unified Care Record (até 2021.1)
Privacidade
HS2022-01-17: Problema de performance de índice FHIR pode estar causando instabilidade no ODS
Information Exchange:
2018.1
Unified Care Record:
2019.1, 2019.2
Operacional
HS2022-01-18: Vulnerabilidade de Segurança no FHIR Gateway/FHIR Server
Unified Care Record:
2021.1
InterSystems IRIS for Health:
2021.1
Segurança
HS2022-01-19: Servidor FHIR não verifica revogação de token
Unified Care Record:
2020.1, 2020.2, 2021.1
InterSystems IRIS for Health:
2020.4, 2021.1
HealthShare Health Connect:
2020.4, 2021.1
Segurança
HS2022-01-20: Escopo do Token OAuth não é aplicado em Bundles FHIR Batch e Transaction
InterSystems IRIS for Health:
2021.1
PrivacidadeSegurançaOperacional
HS2022-01-21: Cliente REST de interoperabilidade do FHIR Server não realiza a limpeza de dados de forma correta
InterSystems IRIS for Health:
2020.2, 2020.3
HealthShare Health Connect:
2020.2, 2020.3
Operacional
HS2022-01-22: Problema de Segurança no Patient Index
Todas as versões do:
Patient Index (até 2021.2)
Segurança
Se você tiver dúvidas referente a este aviso, por favor entre em contato com support@intersystems.com e referencie o “HealthShare Alert HS2022-01”.
Artigo
Yuri Marx · Mar. 3, 2022
Às vezes é necessário transferir ou migrar dados e esquemas de dados do Postgres para o IRIS. Atualmente, existem algumas opções para fazer isso, mas as duas opções mais populares são usando DBeaver (https://openexchange.intersystems.com/package/DBeaver) ou SQLGateway. A primeira será demonstrada neste artigo e a segunda é apresentada em um excelente artigo de Robert Cemper, DB Migration using SQLgateway (https://community.intersystems.com/post/db-migration-using-sqlgateway), veja neste artigo como realizar essa migração usando o DBeaver:
Amostra de dados para demonstrar a migração
No Github é possível baixar o projeto docker compose para construir e rodar os 2 bancos de dados:
Banco de origem: Banco de dados de Exemplo em uma instância Docker com PostgreSQL.
Banco de destino: Instância Docker com o InterSystems IRIS data platform pronto para receber os dados da migração.
Para obter a amostra e executá-la, siga estas etapas:
1. Acesse https://github.com/yurimarx/migration-pg-iris e clique em Download para acessar o repositório git.2. Clone o projeto: git clone https://github.com/yurimarx/migration-pg-iris.git.3. Vá para a pasta do projeto migration-pg-iris.4. Faça o build: docker-compose build.5. Execute os contêineres: docker-compose up -d.6. Veja em sua área de trabalho docker com as instâncias estão ok:
Sobre os dados a serem migrados
O processo de migração do PostgreSQL para o IRIS vai migrar:
08 tabelas.
1000000 registros de venda (sale).
250000 resgistros de usuário (users).
300 registros de produto (product).
500 registros de loja (store).
100 registros de país (country).
30 registros de cidade (city).
5 registros de status_name.
A migração irá para o schema dc_test dentro do namespace USER no InterSystems IRIS database.
Ferramenta aberta para migrar do PostgreSQL para o IRIS: DBeaver
DBeaver é uma ferramenta de banco de dados para conectar, criar, descartar, selecionar, atualizar e excluir objetos de dados aos principais produtos de banco de dados do mercado. Faça o download em: https://openexchange.intersystems.com/package/DBeaver. Agora siga as instruções de instalação para obter este produto fantástico em seu laptop ou desktop.DBeaver pode ser usado para migrar dados entre conexões de banco de dados, mesmo que sejam de fabricantes e versões diferentes.
Conectando nos bancos de dados com o DBeaver
Para configurar a conexão com o PostgreSQL no DBeaver:
1. No DBeaver vá para File > New.
2. Selecione Database Connection e clique Next:
3. Escolha a aba SQL > PostgreSQL e clique next:
4. Preencha a conexão com o PostgreSQL como nesta figura:
Host: localhost
Port: 5438
Database: postgres
Username: postgres
Password: postgres
Click Finish.
Configuração da conexão com o InterSystems IRIS no DBeaver:
1. No DBeaver vá para File > New.2. Selecione Database Connection e clique Next:
3. Escolha a aba SQL > InterSystems IRIS e clique next:
4. Se o DBeaver requisitar o download do driver do InterSystems IRIS, pressione Yes ou Ok.5. Configure a conexão com o InterSystems IRIS como nesta figura:
Host: localhost
Database/Schema: user
Username: _SYSTEM
Password: SYS
Click Text Connection and Finish.
6. As conexões (postgres and user) agora estão disponíveis no Database Navigator:
Faça a Migração
Siga estes passos:1. Expanda a conexão postgres > public e selecione todas as tabelas. Clique com o botão direito do mouse com as tabelas selecionadas e escolha Export Data, como na figura abaixo:
2. Selecione Database, como na figura a seguir e clique Next
3. Clique em Choose button:
4. Selecione dc_test e clique Ok.
5. Agora é necessário realizar algumas mudanças de tipo de dados para o banco de dados de destino, pois o IRIS e PostgreSQL usando tipos de dados diferentes para integer e decimal.6. Expanda a tabela public.country, selecione o primeiro campo (country_id) e clique Columns…
7. Altere o Target Type de int4 para integer e clique Ok.
8. Repita o processo para as tabelas:
a. public.product.b. public.status_name.c. public.users.d. public.city (altere o tipo para integer nos campos city_id e country_id).e. public.store (altere o tipo para integer nos campos store_id e city_id).f. public.sale (altere o tipo para double no amount e integer para product_id, user_id e store_id)
g. public.order_status (altere status_name_id para integer).
9. Agora com os tipos alterados no Target Data Types, clique Next.
10. Configure Fetch size para 1000000 e clique Next.
11. Aceite os valores default para o Data load settings e clique Next.
12. Em Confirm clique em Proceed.
13. Agora veja no Database Navigator todas as tabelas PostgreSQL dentro do InterSystems IRIS dc_test schema.
O processo de migração foi muito simples para tabelas, mas para visualizações, funções, gatilhos e procedimentos armazenados, você precisa reescrever o código-fonte SQL usando ObjectScript ou SQL.
O que você ganha ao migrar para o IRIS?
API Management.
Relatórios visuais (IRIS Reports).
AutoML (IntegratedML).
Desenvolvimento multi linguagens de programação (Python, Java, .NET, JavaScript).
ESB.
BI/Analytics.
NLP.
Desenvolvimento de microsserviços.
Multimodel database (SQL, JSON, Analytical Cubes, Object Oriented).
Sharding.
Em resumo, ao migrar para o IRIS você obtém uma plataforma de dados, quando antes você só tinha um banco de dados.
Anúncio
Angelo Bruno Braga · Dez. 13, 2022
Olá desenvolvedores,
Neste mês de outubro, vocês postaram 68 novas perguntas na Comunidade de Desenvolvedores:
Perguntas
InterSystems IRIS
Arquivo de banco de dados IRIS [IRIS.DAT] verificação do atributo de Mirrorpor Phillip Wu
Definir tempo limite da sessão por funçãopor Kevin Kindschuh
Obtenha o id primário da linha inserida no SQLpor Dmitry Maslennikov
ClassMethod recursivopor Patrik Spisak
Adicionando uma classe ao namespace 'USER' usando o terminalpor Phillip Wu
O Visual Studio Code não se conectará ao IRIS: WRONG_VERSION_NUMBERpor Phillip Wu
O índice exclusivo da classe base não funciona por Iryna Mykhailova
Instância não abre por índice chave do índice após a migração do Cache para o Iris.por Edmara Francisco
Verificação de restrição de chave estrangeira do SQL ao excluirpor Dmitry Maslennikov
"Cópia" de Roteador de mensagempor Andy Khemraj
Criação de DTL para Saída em lote mapeada por registropor Chip Gore
É possível desabilitar a validação do certificado em um HS.FHIRServer.RestClient.HTTP Enpointpor Martin Staudigel
Qual é a probabilidade de encontrar "mensagens perdidas" no banco de mensagens?por Oliver Wilms
Não consigo fazer login no registro de contêinerpor Shane M Elliott
O serviço WSDL SOAP está criando sessões da web que levam o servidor a ficar inativopor prashanth ponugoti
Existe uma maneira de modificar as classes %SYS para fins de depuração? por Norman W. Freeman
Usuários Delegados por Rob Schoenmakers
Limpar Campo SDApor Rob Schoenmakers
Caché
APIs para obter os dados no InterSystems Cachepor Naveenkumar M
tablePane com OnCreateResultSet não retorna resultados ao referenciar outro namespacepor Andy Stobirski
Enviando EMAIL - Alterando fonte e tamanhopor Steve Strunk
Como obter a lista de valores no menu suspenso da categoria de produções no códigopor William Glover
Adicionando permissão de tabela programaticamente a uma funçãopor David Hockenbroch
Arquivo 834 X12 com bloco ST SE único com vários membrospor Sheetal Kairawala
Diferença de $SYSTEM.Encryption.AESCBCEncrypt com implementação C#por Menno Voerman
Projeção de Esquema XML - honrando todos os esquemas Locationspor Ruiyan Yu
Como o Cache da InterSystems calcula a contagem de licenças por Rathinakumar S
500-Internal Server Errorpor Muhammad Shahid
Ens.Alertpor Smythe Smythee
Exibindo ícones personalizados no Zen TablePanepor Andy Stobirski
Compressão de Streamspor Paul Riker
Vendo se um adaptador está habilitado no códigopor William Glover
Existe alguma documentação abrangente sobre $$$ Macrospor William Glover
do HttpRequest.SetHeader("organization-identifier","myName") nunca definirá um cabeçalhopor Edoeard Kroetkov
baixar InterSystems Caché ODBC Data Sourcepor Tyffany Coimbra
Download de imagem por URLpor Fabio Care
Configuração SSL para Gmailpor Smythe Smythee
Como obter valores de uma classe serialobjectpor Smythe Smythee
Atualizar a versão do Cachepor Tiago Pereira
Gatilho, Inserir depoispor Oleksandr Demchenko
Inserção em lote com multiconexões no Cachepor xu zong
Existe uma maneira de mascarar o código no estúdio, como proteção por senha ou com direitos de usuário?por William Glover
Como ativar %Service_Terminal com linha de comando?por Thiago Andrade
Erro de Resposta Adiadapor William Glover
Left outer join nas tabelas não retorna correspondênciaspor Andy Stobirski
HealthShare
Retornando todos os business hosts associados a uma categoria de produçãopor William Glover
Qual tabela contém as informações sobre as mensagens descartadas, existem métodos que sejam usados para recuperá-las?por William Glover
De um Ambiente de INTEGRAÇÃO, conecte-se a um Ambiente de PRÉ-PRODUÇÃO para acessar o Servidor de Recursos de Validação de Token JWT.por Yone Moreno
Iterando o contêiner HS.SDA3.Container duas vezespor Eduard Lebedyuk
Ensemble
Quais adaptadores estão presentes nos Business Services, mas não estão nos Business Operations?por Maciej Bogdanski
Forçar a parada de uma tarefa por Rochdi Badis
Conexões do gateway SQLpor Rochdi Badis
Business Service Pool Size com Ens.Director.CreatBusinessService()por Michael Davidovich
Conversão de tipos de dados no Cachepor Rochdi Badis
Apache com certificados SSLpor Rochdi Badis
Não é possível imprimir a partir do Edgepor Rochdi Badis
InterSystems IRIS for Health
A instalação do IRIS for Health trava no AMDpor Dmitrii Baranov
Imagem/contêiner do Docker - como usarpor Dmitrii Baranov
Como executar a tabela de ajuste em um banco de dados somente leitura (Message Bank)por Stefan Schick
Transforme JSON em VDOC por Ori Tsarfati
para realizar loops no conteúdo repetitivo de tagpor prashanth ponugoti
Resposta Nula da Solicitação para o Business Operation Integradopor Michael Davidovich
Conexões SFTP e espelhamento/endereços IP virtuaispor Warren Baldock
HL7 para FHIRpor Smythe Smythee
O banco de dados IRISTMP na instância IRIS desativa a instância de produçãopor Sudhir Sinha
VSCode
Erros de Parsisng da Extensão da linguagem VSCode ObjectScriptpor Victor Gordillo
InterSystems IRIS BI (DeepSee)
DeepSee - Modificando filtro avançado em pivô com base no filtro do painelpor Julie Bolinsky
Outras
Não consigo me registrar através do Global Masterpor James Woo
Aqui estão as perguntas-chave de outubro escolhidas pelos especialistas da InterSystems:
📌 Não abrir uma instância por chave de índice após a migração do Caché para a Iris por @Edmara.Francisco
📌 Obtenha o id primário da linha inserida no SQL por @Dmitry.Maslennikov
📌 O índice exclusivo da classe base não funciona por @Irene.Mikhaylova
Essas perguntas serão destacadas com a #Tag de pergunta chave, e seus autores receberão o selo Pergunta-chave no Global Masters.
Parabéns e obrigado a todos pelas perguntas. Continuem Enviando-las!
Vejo você no próximo mês ;)
Anúncio
Danusa Calixto · Dez. 19, 2022
No nosso último episódio do Data Points, tive uma conversa com Carmen Logue e Mary Ann Fusi sobre Adaptive Analytics e Smart Data Fabrics. Muita coisa mudou e melhorou desde a última vez que discutimos este produto no podcast, então ouça!
Para mais informações e para assinar o podcast, acesse https://datapoints.intersystems.com.
Para assistir à apresentação de Carmen e Joe no AtScale Semantic Layer Summit, veja aqui: https://www.intersystems.com/resources/unlocking-the-power-of-your-data-using-a-data-fabric-architecture-with-a-universal-semantic-layer/
Para saber mais sobre programas de acesso antecipado para tecnologias de nuvem da InterSystems, veja aqui: https://gs2022.isccloud.io/#early-access
Artigo
Larissa Prussak · Jun. 29
Olá desenvolvedores. Só quero compartilhar com vocês uma descoberta que pode salvar alguns minutos importantes da sua vida como desenvolvedor com o InterSystems IRIS.
Mas!
Deveria funcionar; você implantou a API REST corretamente e tudo está no lugar.
O que poderia dar errado?
O problema, no meu caso, foi que eu escrevi o nome da classe errado, como na imagem abaixo:
(Havia um erro de digitação ali. E não houve erros de compilação, nem mensagens no console — nenhum indício do que estava errado.)
Então, se você se deparar com um problema semelhante — uma mensagem de “Not Found” para uma página que “deveria funcionar” — dê uma olhada na sua classe Dispatch. O nome está correto?
E, claro, pergunte para a comunidade. Talvez isso economize alguns minutos preciosos da nossa vida de desenvolvedor.
Saudações!
Anúncio
Stefan Wittmann · Fev. 18, 2021
Publicado o novo lançamento da versão 1.5 do InterSystems API Manager (IAM).
O contêiner do IAM, incluindo todos os artefatos necessários para realizar a atualização a partir de versões anteriores do IAM podem ser baixados do site de Distribuição de Software do WRC na área de Componentes.
O número de registro deste lançamento é IAM 1.5.0.9-4.
O Gerenciador de APIs InterSystems 1.5 facilita o gerenciamento do tráfego de suas APIs, a integração de seu ambiente e usuários com suas APIs. Ele possui várias novas funcionalidades incluindo:
Experiência do Usuário aprimorada
Introdução de novas ferramentas no Portal do Desenvolvedor
Suporte à conectividade com Kafka
Este lançamento é baseado no Kong Enterprise versão 1.5.0.9. Os lançamentos anteriores do IAM incluíam uma versão "white-label" do Kong Enterprise, e com este lançamento nós incluímos o Kong Enterprise sem necessidade do "white-label". Esta mudança nos permite trazer novos lançamentos em uma maior frequência, bem como prover tanto a documentação quanto outros ativos que a Kong disponibiliza, de forma mais efetiva.
A documentação do IAM 1.5 pode ser obtida aqui. Esta documentação cobre apenas elementos que são específicos ao IAM. Os links da documentação no produto levam os usuários diretamente para a documentação da Kong Enterprise.
A atualização a partir do IAM 0.34-1 necessita de atualizações incrementais de três lançamentos intermediários, processo descrito em maiores detalhes na documentação.
O IAM está disponível apenas através de OCI (Open Container Initiative) também conhecido por formato em contêiner Docker. Imagens de Contêineres estão disponíveis para Linux x86-64 e Linux ARM64, conforme detalhado em Plataformas Suportadas.
Abraço a todos,
Stefan
Pergunta
Davidson Espindola · Abr. 17, 2023
Dears, good morning
I've been developing cache scripts for over 25 years, my entire ERP system has cached scripts, everything is global, no graphic/web screen.I have a little knowledge in JS, Html and CSS, and I'm wanting to start web development for my system, go gradually.I would like if you can help me which would be the best option in development to be able to start. As I live in a region with few training options and specific courses, I will have to take a distance course.If possible, and if someone can, of course, send me a model accessing the cache base, so that I can have an idea of how to start, I would be very grateful.
Anyway, thanks for everyone's attention.
AttDavidson Espindola Hello Davidson.
I suggest you check the courses and guides from the InterSystems Learning to support you.Here are listed some of them:
Angular, JSON, and REST – Oh My!Building Modern Web ApplicationsCaché Web Applications Tutorial
You will find other free courses and tutorials in the InterSystems Learning. If you do not have an account, create a new one.
Hope it helps!
Artigo
Henry Pereira · Set. 12, 2021

Sou apaixonado por documentários! No último final de semana estava assistindo um documentário da Netflix chamado [This is Pop](https://www.netflix.com/br/title/81050786), como está na época do concurso InterSystems IRIS Analytics, pensei: Por que não criar um analítico da música Pop com InterSystems Iris?
O primeiro desafio era a base. Encontrei no [Data World project](https://data.world/typhon/billboard-hot-100-songs-2000-2018-w-spotify-data-lyrics) um arquivo CSV com a lista dos top 100 da Billboard de 2000 à 2018, criado por "Michael Tauberg" @typhon, que encaixava perfeitamente.
Estava conversando com o @Henrique.GonçalvesDias e ele me deu a ideia de usar o [Microsoft Power BI](https://powerbi.microsoft.com/) para criar um relatório com gráficos bonitos.
### Quais foram os gêneros mais populares entre 2000 e 2018?
### Quais artistas tiveram mais músicas na Billboard?
### Que ano teve mais músicas dançantes?
Vamos analisar a base de dados, com ajuda do [csvgen](https://openexchange.intersystems.com/package/csvgen) importamos o arquivo CSV.
A base contém:
**Title** — nome da música
**Artist** — nome do Artista
**Energy** — a energia da música — maior o valor, mais energia
**Danceability** — maior o valor, mais fácil de dançar a música
**Loudness..dB.**. — maior o valor, mais alta é a música
**Liveness** — maior o valor, mais provável que a música é uma gravação ao vivo.
**Valence**. — maior o valor, mais positiva é o estado de espírito da música.
**Duration_ms**. — a duração da música em milisegundos.
**Acousticness**.. maior o valor, mais acústica é a música
**Speechiness**. — maior o valor, mais palavras a música contém
**Lyrics** — Letra da música.
**Genre** — Gênero musical
No arquivo CSV o gênero é um array como este: **[u'dance pop', u'hip pop', u'pop', u'pop rap', u'rap']**
Minha ideia é criar uma tabela Genre (Gênero) e outra para resolver o relacionamento N:N. Um simples script popula estas tabelas.
Depois disto, é só conectar o Power BI no InterSystems Iris ([aqui tem um passo-a-passo de como fazer isto](https://community.intersystems.com/post/power-bi-connector-intersystems-iris-part-i)).
Próximo passo: Infograficos legais.

Um gráfico de barras mostra a quantidade de artistas com mais músicas na Billboard e um gráfico de linha exibe a duração média das músicas por ano.
Um gráfico de pizza mostra os gêneros mais comuns, para minha surpresa, country contemporâneo é o gênero mais popular.
Música pop tem se tornado barulhenta com o passar dos anos? Para responder usei um diagrama de dispersão com a média loudness das músicas.
### A música pop tem se tornado menos ou mais dançante?
Na segunda página um gráfico de barras mostra a como a danceability mudou pelos anos e a relação entre energy versus acousticness.

[https://openexchange.intersystems.com/contest/current](https://openexchange.intersystems.com/contest/current)
Agradecimento especial ao @Henrique.GonçalvesDias pelas boas conversas e pelo apoio.
Artigo
Lily Taub · Dez. 21, 2020
## Introdução
A maior parte da comunicação servidor-cliente na web é baseada em uma estrutura de solicitação e resposta. O cliente envia uma solicitação ao servidor e o servidor responde a esta solicitação. O protocolo WebSocket fornece um canal bidirecional de comunicação entre um servidor e um cliente, permitindo que os servidores enviem mensagens aos clientes sem primeiro receber uma solicitação. Para obter mais informações sobre o protocolo WebSocket e sua implementação no InterSystems IRIS, consulte os links abaixo.
* [Protocolo WebSocket](https://tools.ietf.org/html/rfc6455)
* [WebSockets na documentação do InterSystems IRIS](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCGI_websockets)
Este tutorial é uma atualização de ["Asynchronous Websockets - um tutorial rápido"](https://community.intersystems.com/post/asynchronous-websockets-quick-tutorial) para Caché 2016.2+ e InterSystems IRIS 2018.1+.
#### *Operação assíncrona vs síncrona*
No InterSystems IRIS, uma conexão WebSocket pode ser implementada de forma síncrona ou assíncrona. O modo como a conexão WebSocket entre o cliente e o servidor opera é determinado pela propriedade “SharedConnection” da classe %CSP.WebSocket.
* SharedConnection=1 : operação assíncrona
* SharedConnection=0: operação síncrona
Uma conexão WebSocket entre um cliente e um servidor hospedado em uma instância do InterSystems IRIS inclui uma conexão entre a instância IRIS e o Web Gateway. Na operação síncrona de WebSocket, a conexão usa um canal privado. Na operação assíncrona de WebSocket, um grupo de clientes WebSocket compartilha um conjunto de conexões entre a instância IRIS e o Web Gateway. A vantagem de uma implementação assíncrona de WebSockets se destaca quando se tem muitos clientes se conectando ao mesmo servidor, pois esta implementação não exige que cada cliente seja tratado por uma conexão exclusiva entre o Web Gateway e a instância IRIS.
Neste tutorial, implementaremos WebSockets de forma assíncrona. Portanto, todas as janelas de bate-papo abertas compartilham um conjunto de conexões entre o Web Gateway e a instância IRIS que hospeda a classe do servidor WebSocket.
## Visão geral da aplicação de chat
O “hello world” do WebSockets é uma aplicação de chat em que um usuário pode enviar mensagens que são transmitidas a todos os usuários logados na aplicação. Neste tutorial, os componentes da aplicação de chat incluem:
* Servidor: implementado em uma classe que estende %CSP.WebSocket
* Cliente: implementado por uma página CSP
A implementação desta aplicação de chat irá realizar o seguinte:
* Os usuários podem transmitir mensagens para todas as janelas do chat abertas
* Os usuários on-line aparecerão na lista “Usuários on-line” de todas as janelas de chat abertas
* Os usuários podem alterar seu nome de usuário compondo uma mensagem começando com a palavra-chave “alias” e esta mensagem não será transmitida, mas atualizará a lista de “Usuários On-line”
* Quando os usuários fecham a janela de chat, eles são removidos da lista de “Usuários on-line”
Para ver o código fonte da aplicação de chat, visite este [repositório no GitHub](https://github.com/intersystems/InterSystems-WebSockets).
## O Cliente
O lado do cliente da nossa aplicação de chat é implementado por uma página CSP contendo o estilo para a janela do chat, a declaração da conexão WebSocket, eventos do WebSocket e métodos que tratam da comunicação de e para o servidor, e funções auxiliares que empacotam mensagens enviadas para o servidor e processam as mensagens de entrada.
Primeiro, veremos como a aplicação inicia a conexão WebSocket usando uma biblioteca Javascript WebSocket.
```javascript
ws = new WebSocket(((window.location.protocol === "https:")? "wss:":"ws:")
+ "//"+ window.location.host + "/csp/user/Chat.Server.cls");
```
`new` cria uma nova instância da classe WebSocket. Isso abre uma conexão WebSocket com o servidor usando o protocolo "wss" (indica o uso de TLS para o canal de comunicação WebSocket) ou "ws". O servidor é especificado pelo número da porta do servidor web e nome do host da instância que define a classe `Chat.Server` (essas informações estão contidas na variável `window.location.host`). O nome de nossa classe no servidor (`Chat.Server.cls`) está incluído no URI de abertura do WebSocket como uma solicitação GET para o recurso no servidor.
O evento `ws.onopen` é disparado quando a conexão WebSocket é estabelecida com êxito, fazendo a transição de um estado de **_conectando_** para um estado **_aberto_**.
```javascript
ws.onopen = function(event){
document.getElementById("headline").innerHTML = "CHAT - CONNECTED";
};
```
Este evento atualiza o cabeçalho da janela do chat para indicar que o cliente e o servidor estão conectados.
### *Enviando mensagens*
A ação de um usuário enviando uma mensagem aciona a função de `envio`. Essa função atua como um invólucro em torno do método `ws.send`, que contém a mecânica de envio da mensagem do cliente ao servidor pela conexão WebSocket.
```javascript
function send() {
var line=$("#inputline").val();
if (line.substr(0,5)=="alias"){
alias=line.split(" ")[1];
if (alias==""){
alias="default";
}
var data = {}
data.User = alias
ws.send(JSON.stringify(data));
} else {
var msg=btoa(line);
var data={};
data.Message=msg;
data.Author=alias;
if (ws && msg!="") {
ws.send(JSON.stringify(data));
}
}
$("#inputline").val("");
}
```
`send` envia pacotes as informações a serem enviadas ao servidor em um objeto JSON, definindo pares de chave/valor de acordo com o tipo de informação que está sendo enviada (atualização de alias ou mensagem geral). `btoa` traduz o conteúdo de uma mensagem geral em uma string ASCII codificada em base 64.
### *Recebendo mensagens*
Quando o cliente recebe uma mensagem do servidor, o evento `ws.onmessage` é acionado.
```javascript
ws.onmessage = function(event) {
var d=JSON.parse(event.data);
if (d.Type=="Chat") {
$("#chat").append(wrapmessage(d));
$("#chatdiv").animate({ scrollTop: $('#chatdiv').prop("scrollHeight")}, 1000);
} else if(d.Type=="userlist") {
var ul = document.getElementById("userlist");
while(ul.firstChild){ul.removeChild(ul.firstChild)};
$("#userlist").append(wrapuser(d.Users));
} else if(d.Type=="Status"){
document.getElementById("headline").innerHTML = "CHAT - connected - "+d.WSID;
}
};
```
Dependendo do tipo de mensagem que o cliente recebe (“Chat”, “userlist” ou “status”), o evento `onmessage` chama `wrapmessage` ou `wrapuser` para popular as seções apropriadas da janela de chat com os dados de entrada. Se a mensagem recebida for uma atualização de status, o cabeçalho de status da janela do chat é atualizado com o ID do WebSocket, que identifica a conexão WebSocket bidirecional associada à janela do chat.
### *Componentes adicionais do cliente*
Um erro na comunicação entre o cliente e o servidor aciona o método WebSocket `onerror`, que emite um alerta que nos notifica do erro e atualiza o cabeçalho de status da página.
```javascript
ws.onerror = function(event) {
document.GetElementById("headline").innerHTML = "CHAT - error";
alert("Received error");
};
```
O método `onclose` é disparado quando a conexão WebSocket entre o cliente e o servidor é fechada, e atualiza o cabeçalho de status.
```javascript
ws.onclose = function(event) {
ws = null;
document.getElementById("headline").innerHTML = "CHAT - disconnected";
}
```
## O servidor
O lado do servidor da aplicação de chat é implementado pela classe `Chat.Server`, que estende de `%CSP.WebSocket`. Nossa classe de servidor herda várias propriedades e métodos de `%CSP.WebSocket`, alguns dos quais discutirei abaixo. `Chat.Server` também implementa métodos personalizados para processar mensagens de entrada e transmitir mensagens para o(s) cliente(s).
### *Antes de iniciar o servidor*
`OnPreServer()` é executado antes de o servidor WebSocket ser criado e é herdado da classe `%CSP.WebSocket`.
```
Method OnPreServer() As %Status
{
set ..SharedConnection=1
if (..WebSocketID '= ""){
set ^Chat.WebSocketConnections(..WebSocketID)=""
} else {
set ^Chat.Errors($INCREMENT(^Chat.Errors),"no websocketid defined")=$HOROLOG
}
Quit $$$OK
}
```
Este método define o parâmetro da classe `SharedConnection` em 1, indicando que nossa conexão WebSocket será assíncrona e suportada por vários processos que definem conexões entre a instância InterSystems IRIS e o Web Gateway. O parâmetro `SharedConnection` só pode ser alterado em `OnPreServer()`. O `OnPreServer()` também armazena o ID WebSocket associado ao cliente no `^Chat.WebSocketConnections` global.
### *O método do servidor*
O corpo principal da lógica executada pelo servidor está contido no método `Server()`.
```
Method Server() As %Status
{
do ..StatusUpdate(..WebSocketID)
for {
set data=..Read(.size,.sc,1)
if ($$$ISERR(sc)){
if ($$$GETERRORCODE(sc)=$$$CSPWebSocketTimeout) {
//$$$DEBUG("no data")
}
if ($$$GETERRORCODE(sc)=$$$CSPWebSocketClosed){
kill ^Chat.WebSocketConnections(..WebSocketID)
do ..RemoveUser($g(^Chat.Users(..WebSocketID)))
kill ^Chat.Users(..WebSocketID)
quit // Client closed WebSocket
}
} else{
if data["User"{
do ..AddUser(data,..WebSocketID)
} else {
set mid=$INCREMENT(^Chat.Messages)
set ^Chat.Messages(mid)=data
do ..ProcessMessage(mid)
}
}
}
Quit $$$OK
}
```
Este método lê as mensagens recebidas do cliente (usando o método `Read` da classe `%CSP.WebSockets`), adiciona os objetos JSON recebidos ao `^Chat.Messages` global e chama o `ProcessMessage()` para encaminhar a mensagem a todos os outros clientes de chat conectados. Quando um usuário fecha sua janela de chat (encerrando assim a conexão WebSocket com o servidor), a chamada do método `Server()` para `Read` retorna um código de erro que avalia a macro `$$$CSPWebSocketClosed` e o método prossegue para tratar o encerramento de acordo.
### *Processamento e distribuição de mensagens*
`ProcessMessage()` adiciona metadados à mensagem de chat recebida e chama o `SendData()`, passando a mensagem como um parâmetro.
```
ClassMethod ProcessMessage(mid As %String)
{
set msg = ##class(%DynamicObject).%FromJSON($GET(^Chat.Messages(mid)))
set msg.Type="Chat"
set msg.Sent=$ZDATETIME($HOROLOG,3)
do ..SendData(msg)
}
```
`ProcessMessage()` recupera a mensagem formatada em JSON do `^Chat.Messages` global e a converte em um objeto do InterSystems IRIS usando a classe `%DynamicObject` e o método '`%FromJSON`. Isso nos permite editar facilmente os dados antes de encaminharmos a mensagem para todos os clientes de chat conectados. Adicionamos um atributo `Type` com o valor “Chat”, que o cliente usa para determinar como lidar com a mensagem recebida. `SendData()` envia a mensagem para todos os outros clientes de chat conectados.
```
ClassMethod SendData(data As %DynamicObject)
{
set c = ""
for {
set c = $order(^Chat.WebSocketConnections(c))
if c="" Quit
set ws = ..%New()
set sc = ws.OpenServer(c)
if $$$ISERR(sc) { do ..HandleError(c,"open") }
set sc = ws.Write(data.%ToJSON())
if $$$ISERR(sc) { do ..HandleError(c,"write") }
}
}
```
`SendData()` converte o objeto do InterSystems IRIS de volta em uma string JSON (`data.%ToJSON()`) e envia a mensagem para todos os clientes de chat. `SendData()` obtém o ID WebSocket associado a cada conexão cliente-servidor do `^Chat.WebSocketConnections` global e usa o ID para abrir uma conexão WebSocket por meio do método `OpenServer` da classe `%CSP.WebSocket`. Podemos usar o método `OpenServer` para fazer isso porque nossas conexões WebSocket são assíncronas - extraímos do pool existente de processos do IRIS-Web Gateway e atribuímos um ID WebSocket que identifica a conexão do servidor a um cliente de chat específico. Por fim, o método `Write()` `%CSP.WebSocket` envia a representação da string JSON da mensagem para o cliente.
## Conclusão
Esta aplicação de chat demonstra como estabelecer conexões WebSocket entre um cliente e um servidor hospedado pelo InterSystems IRIS. Para continuar lendo sobre o protocolo e sua implementação no InterSystems IRIS, dê uma olhada nos links na introdução.
Anúncio
Angelo Bruno Braga · Ago. 22, 2022
Estamos muito empolgados em anunciar o lançamento da série de Mesas Redondas da Comunidade de Desenvolvedores!
As sessões de Mesas Redondas são para você aprender novidades e conectar com outros membros da Comunidade. Todo mês será selecionado um novo tópico, disponibilizada uma visão geral e selecionada uma data e horário específico para este evento.
Nós discutimos sobre alguns tópicos para esta primeira Mesa Redonda mas, acima de tudo, nós queremos saber de vocês qual assunto vocês gostariam de debater!
Navegue >> para este desafio << no Global Masters para escolher um tópico e sugerir o seu.
Ainda não é um membro do Global Masters? Junte-se aqui - utilize suas credenciais InterSystems SSO para acessar.
Aprenda mais sobre o Global Masters, nossa plataforma de gamificação para desenvolvedores aqui.