Pesquisar

Limpar filtro
Pergunta
Jose Lazarete · Set. 8, 2021

Licença portal IAM com prazo para expirar

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

Perguntas-Chave do Mês: Março de 2025

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

Trace de aplicação

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

Recuperando Uma Global Excluída Acidentalmente

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

Apresentando a Ferramenta de Data Profiling de CCD da LEAD North

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

Alerta: HS2022-01: Alertas Múltiplos IRIS for Health & HealthShare

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

Migração de Dados - Parte I: do Postgres para o IRIS

À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

Perguntas-chave do mês: Novembro de 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

Novo Podcast: Adaptive Analytics & Smart Data Fabrics (em Inglês)

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

Depuração de API REST: Situação de Página Não Encontrada

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

Lançada a nova versão 1.5.0.9 do IAM

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

desenvolvimento web

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

Música Pop Analytics

![https://media3.giphy.com/media/L0qTl8hl84EDly62J1/giphy.gif?cid=ecf05e47wl2uvkvz3dxsp1axa4gf5tsk7s7nqytg7vwadj38&rid=giphy.gif&ct=g](https://media3.giphy.com/media/L0qTl8hl84EDly62J1/giphy.gif?cid=ecf05e47wl2uvkvz3dxsp1axa4gf5tsk7s7nqytg7vwadj38&rid=giphy.gif&ct=g) 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. ![https://github.com/henryhamon/pop-song-analytics/blob/master/assets/pop_songs_analytics_1.png?raw=true](https://github.com/henryhamon/pop-song-analytics/blob/master/assets/pop_songs_analytics_1.png?raw=true) 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://github.com/henryhamon/pop-song-analytics/blob/master/assets/pop_songs_analytics_2.png?raw=true](https://github.com/henryhamon/pop-song-analytics/blob/master/assets/pop_songs_analytics_2.png?raw=true) [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

Um tutorial sobre WebSockets

## 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

Que rufem os tambores.... as Mesas Redondas da Comunidade de Desenvolvedores estão chegando!

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.