Pesquisar

Limpar filtro
Artigo
Olga Zavrazhnova · Mar. 19, 2021

Descrição dos Distintivos do Global Masters

Olá Comunidade! Aqui você encontrará informações dobre os distintivos da Comunidade de Desenvolvedores & InterSystems Global Masters, além da lisa completa de distintivos com suas descrições e como consegui-los. Informação geral sobre os Níveis e Distintivos no Global Masters Todos os participantes iniciam no 1° nível "Insider" após se juntarem ao Global Masters. Para subir de nível você deve conquistar o número de distintivos necessários para o próximo nível. Distintivos são conquistados através da realização de vários desafios no Global Masters. Verifique o artigo Descrição dos Níveis do Global Masters para ver a lista completa de Níveis.Você pode verificar os níveis e distintivos no Global Masters aqui: 1. Clique na aba "Progress" na página de desafios: 2. Role a página para baixo até a seção "Achievements" e então dê um clique no link "Level up by unlocking X more badges": Você pode ver todos os distintivos conquistados também na sua página de perfil da Comunidade de Desenvolvedores, excluindo-se os distintivos da seção Conquistas Global Masters (esses distintivos são relacionados a conquistas no próprio Global Masters e são visiveis apenas na sua página de perfil do Global Masters). Regras de como conquistar distintivos no Global Masters Esta tabela será atualizada conforme novos distintivos forem adicionados. Nome do Distintivo Regras Distintivos de Visualizações Popular Writer - 750 visualizações Concedido se alguma de suas postagens (perguntas ou artigos) na Comunidade de Desenvolvedores reunir mais de 750/2000/5000 visualizações exclusivas. A postagem não pode ser deletada; Ela deve estar publicada. Contamos apenas as postagens com avaliação positiva. Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados. O distintivos é entregue apenas uma vez. Pontos são são fornecidos para cada postagem que reúna a quantidade listada de pontos. Notable Writer - 2.000 visualizações Famous Writer - 5.000 visualizações Gold Writer - 15.000 visualizações Distintivos de Artigos Publicados Reporter - 5 artigos Concedido quando o número de seus artigos (não perguntas) na Comunidade de Desenvolvedores atinge a quantidade de 5/10/25/50 respectivamente. A postagem não pode ser deletada; Ela deve estar publicada. Contamos apenas as postagens com avaliação positiva. Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados. Blogger - 10 artigos Influencer - 25 artigos Opinion Maker - 50 artigos DC Best Practices Author Badge - 1 melhor prática Concedido depois que 1/10/25/50 de seus artigos (não perguntas) forem considerados como Melhores Práticas da Plataforma de Dados InterSystems na Comunidade de Desenvolvedores. A postagem não pode ser deletada; Ela deve estar publicada. Contamos apenas as postagens com avaliação positiva. Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados. RecognizableBest Practices Author Badge - 2 melhores práticas Bronze Best Practices Author Badge - 3 melhores práticas Silver Best Practices Author Badge- 4 melhores práticas Gold Best Practices Author Badge - 5 melhores práticas Master of Answers - 5 respostas aceitas na Comunidade de Desenvolvedores Concedido após 5/10/25/50 de suas respostas forem marcadas como respostas aceitas na Comunidade de Desenvolvedores. Bronze Master of Answers - 10 respostas aceitas na Comunidade de Desenvolvedores Silver Master of Answers - 25 respostas aceitas na Comunidade de Desenvolvedores Gold Master of Answers - 50 respostas aceitas na Comunidade de Desenvolvedores Distintivos de Perguntas Curious Member - 5 perguntas Concedido quando a quantidade de suas perguntas na Comunidade de Desenvolvedores atinge 5/10/25/50 respectivamente. As perguntas não devem ser excluídas, devem estar publicadas. Contamos apenas as perguntas com avaliação positiva. Perguntas do grupo de Feedback da Comunidade de Desenvolvedores não são contadas. Thorough Member - 10 perguntas​ Inquisitive Member - 25 perguntas​ Socratic Member - 50 perguntas​ Distintivos de Favoritos Favorite Post - 10 vezes Concedido quando sua postagem (artigo, pergunta) na Comunidade de Desenvolvedores foi adicionada aos favoritos 10/50/100 vezes. A postagem não pode ser deletada; Ela deve estar publicada. Contamos apenas as postagens com avaliação positiva. Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados. Remarkable Post - 50 vezes Unforgettable Post - 100 vezes Distintivos de Votação Insightful Author - 50 votos Concedido quando suas postagens (artigos, perguntas) obtiverem o total de 50/100/500/1000 votos na Comunidade de Desenvolvedores. A postagem não pode ser deletada; Ela deve estar publicada. Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados. Expert Author - 100 votos Recognizable Author - 500 votos Powerful Author - 1000 votos Insightful Commenter - 50 votos Concedido quando suas respostas (comentários às perguntas) obtiverem o total de 50/100/500/1000 votos na Comunidade de Desenvolvedores. Respostas apagadas não são contadas Respostas no grupo de Feedback da Comunidade de Desenvolvedores não são contadas. Expert Commenter - 100 votos Recognizable Commenter - 500 votos Powerful Commenter - 1000 votos DC Moderator Concedido aos moderadores da Comunidade de Desenvolvedores. O distintivo não está vinculado a níveis. Conquistas Anuais - Os 10 principais autores Gold Best-Selling Author - 1° lugar 1° / 2° / 3° / 4° a 10° lugares na indicação "Best-Selling Author". Dado a autores cujos artigos obtiveram a quantidade máxima de visualizações na Comunidade de Desenvolvedores no ano. Silver Best-Selling Author - 2° lugar Bronze Best-Selling Author - 3° lugar DC Best-Selling Author - 4° a 10° lugares Gold Expert- 1° lugar 1° / 2° / 3° / 4° a 10° lugares na indicação “DC Expert”. Dado aos autores, que obtiveram o maior número de respostas aceitas no ano. Silver Expert - 2° lugar Bronze Expert - 3° lugar DC Expert - 4° a 10° lugares Gold Opinion Leader - 1° lugar 1° / 2° / 3° / 4° a 10° lugares na indicação “DC Opinion Leader”. Dado a autores cujas postagens e respostas obtiveram o maior número de votos na Comunidade de Desenvolvedores no ano. Silver Opinion Leader - 2° lugar Bronze Opinion Leader - 3° lugar DC Opinion Leader - 4° a 10° lugares Conquistas de Recrutadores Gold Recruiter - 100 referências Concedido após 1/10/50/100 de suas referências entrarem na Comunidade de Desenvolvedores. Silver Recruiter - 50 referências Bronze Recruiter - 10 referências DC Recruiter - 1 referências Contribuições Básicas à Comunidade de Desenvolvedores DC Author Concedido depois que você publicar seu primeiro artigo na Comunidade de Desenvolvedores. A postagem não pode ser deletada; Ela deve estar publicada. Artigos do grupo de Feedback da Comunidade de Desenvolvedores não são contados. A postagem deve ser do tipo "Artigo". InterSystems Researcher Concedido depois que você publicar sua primeira pergunta na Comunidade de Desenvolvedores. As perguntas não devem ser excluídas, devem estar publicadas. Perguntas do grupo de Feedback da Comunidade de Desenvolvedores não são contadas. A postagem deverá ser do tipo "Pergunta". DC Commenter Concedido depois que você publicar seu primeiro comentário na Comunidade de Desenvolvedores. Classificação positiva (votos para cima) ou zero votos Comentários feitos no grupo de Feedback da Comunidade de Desenvolvedores não são contados. DC Problem Solver Concedido depois que sua resposta foi marcada como a resposta aceita na Comunidade de Desenvolvedores. Marcado como Aceito Respostas no grupo de Feedback da Comunidade de Desenvolvedores não serão contadas. DC Translator Concedido após você traduzir 1 postagem na comunidade de desenvolvedores. Como adicionar uma tradução Winner of Advent Of COS Concedido aos Vencedores do Advento do Código no ano. Informações aqui. Global Master of the Month Concedido depois que você se tornar o "Advocate of the Month" no Global Masters Gold Advocate of the Year Concedido depois que você se tornar um dos "Best Advocates of the Year" no Global Masters no ano. Silver Advocate of the Year Bronze Advocate of the Year Conquistas do Open Exchange InterSystems Open Exchange Developer Concedido depois que você publicar 1/5/10/25 aplicações no InterSystems Open Exchange. Bronze Open Exchange Developer Silver Open Exchange Developer Gold Open Exchange Developer Verifique as informações adicionais sobre o Global Masters: Como se juntar ao InterSystems Global Masters Descrição dos Níveis do Global Masters Sinta-se a vontade para deixar seu questionamento sobre níveis e distintivos nos comentários!
Artigo
Andre Larsen Barbosa · Jul. 19, 2021

Configurando aplicativos cliente Caché para SSL / TLS

Ao usar o Studio, ODBC ou uma conexão de terminal para Caché ou Ensemble, você deve estar se perguntando como proteger a conexão. Uma opção é adicionar TLS (também conhecido como SSL) à sua conexão. Os aplicativos cliente Caché - TELNET, ODBC e Studio - todos sabem como adicionar TLS à conexão. Eles só precisam ser configurados para fazer isso. Configurar esses clientes é mais fácil em 2015.1 e posteriores. Vou discutir esse novo método. Se você já estiver usando o método antigo e legado, ele continuará funcionando, mas eu recomendo que você considere mudar para o novo. ## Background Esses aplicativos cliente podem ser instalados em uma máquina que não tenha o servidor instalado. Eles não podem depender de ter acesso aos locais normais para armazenar configurações, como o banco de dados CACHESYS ou o arquivo cpf. Em vez disso, suas configurações para os certificados ou protocolos a serem aceitos são armazenadas em um arquivo de texto. Muitas das configurações neste arquivo são semelhantes às configurações em uma configuração SSL / TLS no portal de gerenciamento. ## Onde está o arquivo de configurações? Você terá que criar seu próprio arquivo. O instalador do cliente não cria um para você. Por padrão, o arquivo de configurações é chamado SSLDefs.ini e deve ser colocado no diretório InterSystems \ Cache sob o diretório para arquivos de programas comuns de 32 bits. Este diretório é encontrado na variável de ambiente do Windows * CommonProgramFiles (x86) * no Windows de 64 bits ou * CommonProgramFiles * no Windows de 32 bits. Por exemplo, no Windows 8.1, o arquivo padrão seria: ~~~ C:\Program Files (x86)\Common Files\InterSystems\Cache\SSLdefs.ini ~~~ Se quiser mudar isso, você terá que dizer aos executáveis do cliente onde encontrar o arquivo de configurações. Você pode fazer isso definindo a variável de ambiente * ISC_SSLconfigurations * e configurando-a para todo o caminho e nome de arquivo do seu arquivo. Você pode precisar de permissões de administrador para fazer isso. ## O que há no arquivo de configurações? O arquivo possui dois tipos de seções. O primeiro tipo combina conexões com configurações TLS. Por exemplo, pode dizer ao Studio para usar a seção chamada "Configurações padrão" para encontrar seus parâmetros TLS ao se conectar a development.intersystems.com. O segundo tipo define as configurações de TLS a serem usadas para a conexão. Por exemplo, eles definiriam por qual Autoridade de Certificação esperar que o certificado do servidor seja assinado. As configurações nestas seções são muito semelhantes às configurações em uma configuração SSL / TLS em um servidor Caché ou Ensemble. O primeiro tipo de seção se parece com isto: ~~~ [Development Server] Address=10.100.0.17 Port=1972 TelnetPort=23​ SSLConfig=DefaultSettings​ ~~~ O nome entre colchetes pode ser o que você quiser. Ele está lá apenas para tornar mais fácil para você manter o controle de qual conexão é essa. As configurações de Endereço, Porta e TelnetPort são usadas para decidir quais conexões devem corresponder a esta seção. Os endereços IP ou nomes DNS podem ser usados para o endereço em clientes 2016.1 ou posteriores. Tanto o endereço quanto a porta ou TelnetPort devem corresponder ao local onde o aplicativo cliente está se conectando para que a configuração seja usada. O parâmetro final (SSLConfig) é o nome da configuração da qual obter as configurações de TLS. Ele precisa corresponder ao nome de uma das configurações no arquivo. O segundo tipo de seção tem a seguinte aparência: ~~~ [DefaultSettings] VerifyPeer=2 VerifyHost=1 CAfile=c:\InterSystems\certificates\CAcert.pem CertFile=c:\InterSystems\certificates\ClientCert.pem KeyFile=c:\InterSystems\certificates\ClientKey.key Password= KeyType=2 Protocols=24 CipherList=ALL:!aNULL:!eNULL:!EXP:!SSLv2 ~~~ O nome da seção está listado na primeira linha: [DefaultSettings] e corresponde ao nome listado no parâmetro SSLConfig da primeira seção do exemplo acima. Portanto, esta configuração será usada para conexões com o servidor 10.100.0.17 na porta 1972 ou na porta 23. Usar copiar e colar no exemplo acima geralmente causa caracteres não imprimíveis em seu arquivo de texto. Certifique-se de ter removido quaisquer caracteres extras, por exemplo, salvando o arquivo como somente texto e abrindo-o novamente. Aqui está uma descrição do que os parâmetros significam: - **VerifyPeer** As opções para isso são 0 = nenhum, 1 = solicitação e 2 = exigir. Exigir é o valor recomendado. Se você não escolher nenhum, é possível que um servidor malicioso finja ser o servidor ao qual você pretende se conectar. Se você escolher requerer, precisará preencher uma Autoridade de certificação em que você confia para verificar os certificados para o valor CAFile. Isso é equivalente a "Verificação do certificado do servidor" no portal. (Observação: a solicitação não faz sentido para uma configuração de cliente, mas eu a incluí aqui para que você possa entender por que as opções são 0 e 2.) - **VerifyHost** As opções para isso são 0 = nenhum, 1 = obrigatório. Esta opção verifica se o certificado do servidor lista o nome do host ou IP ao qual você pediu para se conectar nos campos Nome comum do assunto ou subjectAlternativeName. Este campo não possui equivalente no portal, mas é o mesmo tipo de verificação da propriedade SSLCheckServerIdentity da classe% Net.HttpRequest. Só é configurável se o seu cliente estiver usando o Caché / Ensemble 2018.1 ou posterior, ou qualquer versão da InterSystems IRIS Data Platform. - **CAfile** O caminho para o arquivo de autoridade de certificação (CA) confiável. Deve ser a CA que assinou o certificado do * outro * lado (o servidor), não o seu próprio certificado. Isso deve ser preenchido se você escolheu um valor VerifyPeer de 2. Isso é o equivalente a "Arquivo contendo certificado (s) de autoridade de certificação confiável (s)" no portal. Os certificados devem estar no formato PEM. - **CertFile** O caminho para seu próprio certificado. Deve ficar em branco se o seu cliente não tiver um. Equivale a "Arquivo contendo o certificado deste cliente" no portal. Os certificados devem estar no formato PEM. - **KeyFile** O caminho para a chave privada correspondente para CertFile. Deve ser preenchido se você tiver um CertFile e em branco se não tiver. Isso é equivalente a "Arquivo contendo chave privada associada" no portal. - **Password** A senha necessária para descriptografar sua chave privada. Deve ficar em branco se você não estiver usando um certificado para este cliente ou se a chave privada do certificado não estiver criptografada no disco. - **KeyType** A sua chave privada é RSA (2) ou DSA (1)? O valor é relevante apenas para configurações que possuem CertFile e KeyFile definidos. Se você não tiver certeza de qual é, sua chave provavelmente é RSA. - **Protocols** Esta é uma representação decimal de valores de bits para as versões de SSL / TLS suportadas. As opções são: 1 = SSLv2, 2 = SSLv3, 4 = TLSv1, 8 = TLSv1.1, 16 = TLSv1.2. SSLv2 e SSLv3 têm problemas conhecidos e não são recomendados. Mais de uma versão pode ser especificada adicionando números. Por exemplo, 24 é TLSv1.1 e TLSv1.2. Isso equivale às caixas de seleção "Protocolos" do portal. (Observação: os 8 e 16 bits não estão em 2015.1. Se quiser usá-los, você precisa atualizar para 2015.2 ou superior.) - **CipherList** Isso é o equivalente a "ciphersuites ativados" no portal. Isso controla exatamente quais tipos de criptografia e hashing serão aceitáveis para este cliente. ** ALL:! ANULL:! ENULL:! EXP:! SSLv2 ** é o valor padrão para esta configuração no portal de gerenciamento. Se você está tendo problemas com sua conexão, provavelmente não é isso. Alterar isso pode tornar sua conexão menos segura, permitindo uma criptografia fraca. Você pode encontrar mais informações sobre este valor no site do openssl. ## Final notes Isso é tudo que você precisa fazer! Se você criar seu arquivo e colocá-lo no local conhecido, ele será usado automaticamente se o nome ou endereço IP e a porta que você está conectando corresponderem a uma das conexões listadas no arquivo. ### Server setup Este artigo é sobre como configurar o lado do cliente de sua conexão para usar SSL, mas não se esqueça de que o servidor ao qual você está se conectando também precisa entender como aceitar SSL. A documentação sobre como configurar o SuperServer para usar SSL pode ser encontrada aqui: [http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_superserver](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_superserver) E a documentação de configuração do serviço Telnet está aqui: [http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_telnet_svr](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_telnet_svr) O método $ SYSTEM.Security.Users.SetTelnetSSLSetting () permite controlar se o servidor Telnet permite ou exige o uso de SSL. Ele está disponível em 2016.1 e posteriores. ### DSN configuration Você não precisa alterar o DSN para uma conexão ODBC, contanto que tenha um endereço de conexão e uma porta correspondentes em seu arquivo de configurações. SSL será usado mesmo se a senha for selecionada para o método de autenticação no DSN. As opções __Password with SSL / TLS__ e ** SSL / TLS server name ** eram para o estilo pré-2015.1 de configuração de SSL para ODBC. ### Documentation link A documentação sobre TLS para aplicativos cliente está agora disponível no site de documentos IRIS: [https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_windotinifile](https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_windotinifile)
Anúncio
Rochael Ribeiro · Maio 24, 2021

Conheça Djeniffer Greffin– A nova moderadora da Comunidade!

Olá Desenvolvedores Estamos felizes por anunciar @Djeniffer.Greffin7753 como a nova moderadora na nossa comunidade! Vamos recebe-la com aplausos e deem uma olhada na biografia dela! Djeniffer trabalha como DBA Consulting no Sabin Medicina Diagnóstica. E aqui estão algumas palavras de @Djeniffer.Greffin7753: - Trabalho com tecnologia da InterSystems desde 2009, meu primeiro contato com a tecnologia foi em uma migração de sistemaoriginalmente escrito em MUMPS para um sistema WEB desenvolvido em ZEN, usando classes e mapeamento global. - Em 2012, fui para uma empresa de desenvolvimento de cuidados de saúde mais especificamente em laboratórios, com um produto LIS (Laboratory Information System). Foi aqui que comecei a trabalhar mais fortemente com interoperabilidade no setor de saúde. Foi neste ponto que comecei a me especializar mais e passei a não só desenvolver, mas também a atuar na performance de aplicações e na afinação de sistemas operacionais. - Em 2018 fui convidada por um de nossos clientes para fazer parte da equipe responsável pelo ambiente core da empresa. Neste cliente, especializei-me em criar interoperabilidade entre dispositivos de laboratório. Tenho profundo conhecimento dos padrões de comunicação na área de saúde. - Hoje atuo fortemente na concepção, implementação e segurança de soluções tecnológicas em laboratório. Portanto, vamos dar as boas-vindas a nossa nova moderadora DC! Obrigado e parabéns, @Djeniffer.Greffin7753! Espero que nossa comunidade cresça com sua ajuda! 👏🏼 Seja muito bem vinda Djeniffer. Tenho certeza que irá agregar muito na comunidade com a tua experiência. Obrigada Claudio!
Anúncio
Angelo Bruno Braga · Ago. 3, 2022

Ganhadores do Concurso de Artigos Técnicos: Edição Python

Olá Desenvolvedores! Temos incríveis artigos novos para vocês lerem e curtirem graças aos nossos maravilhosos participantes do 3ºConcurso de Artigos Técnicos: Edição Python! 🌟 12 ARTIGOS INCRÍVEIS 🌟 E agora chegou a hora de anunciarmos os ganhadores! Vamos conhecer os ganhadores e seus artigos: ⭐️ Prêmios por Especialistas – os ganhadores são selecionados por especialistas InterSystems: 🥇 1º lugar: IRIS Embedded Python with Azure Service Bus (ASB) use case por @Yaron.Munz8173 🥈 2º lugar: Getting known with Django part 1 por @Dmitry.Maslennikov 🥉 3º lugar: Introduction to Web Scraping with Embedded Python - Let’s Extract python job’s por @Rizmaan.Marikar2583 ⭐️ Prêmio pela Comunidade – o ganhador é selecionado por membros da Comunidade, através do artigo com maior quantidade de likes: 🏆 IRIS Embedded Python with Azure Service Bus (ASB) use case por @Yaron.Munz8173 E... ⭐️ Gostaríamos de agradecer ao @Dmitry.Maslennikov pela séries de 3 artigos! Ele ganhará um Apple HomePod mini ou um Apple Pencil. Vamos dar os parabéns aos nossos heróis que participaram do nosso terceiro concurso de Artigos Técnicos: @Yuri.Gomes @Robert.Cemper1003 @Muhammad.Waseem @Veerarajan.Karunanithi9493 @Renato.Banzai @Ramil.TK OBRIGADO A TODOS VOCÊS! Vocês fizeram uma contribuição incrível para nossa Comunidade de Desenvolvedores! Os prêmios estão sendo produzidos agora. Entraremos em contato com os participantes quando estiverem prontos para serem despachados.
Artigo
Danusa Calixto · Dez. 27, 2022

Como se inscrever no Programa de Acesso Antecipado (EAP)?

Early Access Program (EAP) é uma maneira de fornecer recursos específicos com antecedência para um grupo de pessoas que testarão e fornecerão feedback sobre esse recurso. A InterSystems lançou diferentes versões (ou peças) de software nos últimos anos e melhorou os recursos antes de serem lançados. Alguns exemplos até agora: Armazenamento Colunar; Python integrado; FHIRSQL; e outros. Mas uma característica dos EAPs é que eles podem não estar disponíveis para todos. Você tem que se inscrever no Programa. No caso da descontinuação da instalação do servidor web Apache (a.k.a. NoPWS), a maneira de se registrar é enviar um e-mail para nopws@intersystems.com. Use este mesmo e-mail para feedback. Depois de receber um e-mail de confirmação, você verá os EAPs aos quais tem acesso no website Serviços de Avaliação. Você deve fazer login para ver o conteúdo. Assim, após o login: 1) EAPs estão no lado direito da tela: Clique em "Baixar Programas de Acesso Antecipado" e vá para a próxima tela. 2) Selecione o EAP no qual você está inscrito. Usando o NoPWS como exemplo aqui: Lembre-se de que você pode ver apenas os EAPs aos quais tem acesso. 3)Após selecionar um EAP, você poderá visualizar todos os documentos e softwares disponíveis para ele: Sim, você é obrigado a concordar com os Termos de Serviço. Em seguida, o botão Download será ativado para você. E uma última coisa... Por favor, forneça feedback! Nós queremos ouvir de você.
Artigo
Claudio Devecchi · Fev. 1, 2021

Paciente no centro de todas as Informações - Parte 1

Quando se fala em tecnologia da informação nas instituições de saúde, principalmente nos hospitais e organizações de medicina diagnóstica, os CIO’s e a área de TI sabem muito bem que para que tudo funcione bem, é necessário que um número muito grande de sistemas e aplicações funcionem de maneira integrada. Talvez a área da saúde seja uma das áreas mais heterogêneas do ponto de vista de negócio, pois engloba além da gestão administrativo financeira, hospitalar, clínica e diagnóstica, uma infinidade de outros sistemas, como o sistema de controle de estacionamento, de hotelaria, dos restaurantes, da recepção, de farmácias, etc. Isso sem contar os sistemas de informação das empresas terceirizadas. Com tudo isso, é quase que impossível concentrar em um único sistema ou banco de dados todas as informações geradas durante o ciclo completo de atendimento de um paciente. É muito comum, por se tratar de sistemas, de tecnologias e fornecedores diferentes, que uma única pessoa tenha sido cadastrada facilmente em mais de dez sistemas e bancos de dados diferentes, com identificações próprias para cada um. Considerando todo este cenário, para conseguir operacionalizar os processos, é imprescindível que as empresas tenham plataformas que promovam a interoperabilidade destes sistemas, assim como o [IRIS for Health](https://learning.intersystems.com/enrol/index.php?id=1081) e [Health Connect da InterSystems](https://learning.intersystems.com/course/view.php?id=1437). Em outras palavras, é preciso que os sistemas “se conversem” para que as informações geradas sejam automaticamente integradas de um sistema para outro, mantendo assim uma consistência e compatibilidade, mesmo que em sistemas e bancos de dados separados. Ainda assim, as informações podem ser geradas e coletadas em momentos diferentes. Exemplo: Um determinado paciente passou pelo atendimento em uma clínica e neste evento foi orientado a realizar exames específicos na mesma ou em outra instituição e retornar quando os exames estivessem prontos. Além do cadastro e da coleta de informações demográficas deste paciente na clínica, foram realizados outros cadastros no momento da admissão deste paciente nos sistemas de medicina diagnóstica. Ou seja, se levarmos em conta o processo assistencial de uma única pessoa, teremos informações pertencentes a diferentes cadastros, sob identificações e dados demográficos distintos, coletados por pessoas e de maneiras diferentes. O fato é que se as empresas não fizerem nada para tratar especificamente desta questão, elas ficarão reféns da segregação dos dados gerados por cadastro, e não consolidados por indivíduo, independentes de quando e onde o mesmo foi atendido. Sempre terão uma visão parcial e não integral de todo o processo, tanto para fins assistenciais, quanto para quaisquer outros fins. Cada vez mais, os gestores e profissionais de saúde sabem do valor de se ter a visão consolidada de todas as informações geradas em torno do paciente, independentes do tempo e do local, sejam elas administrativas, financeiras, comportamentais e principalmente relacionadas à saúde. Se pararmos pra pensar, nós mesmos gostaríamos de ver num único aplicativo todos os nossos dados de saúde, como os exames por exemplo, independente da instituição que nos atendeu. Este sonho já está virando realidade em muitas instituições. Graças às plataformas de saúde como [InterSystems Healthshare](https://learning.intersystems.com/enrol/index.php?id=26), e produtos como [Healthshare Patient Index](https://learning.intersystems.com/enrol/index.php?id=632) é possível levar a gestão de informações na área da saúde para o próximo patamar. No próximo artigo, falaremos um pouco de como funciona o [Healthshare Patient Index](https://learning.intersystems.com/course/view.php?id=632) e de como ele é fundamental para ajudar as empresas a visualizarem o paciente como um único indivíduo e não apenas como um ou mais cadastros.
Artigo
Anastasia Dyubaylo · Mar. 18, 2021

Descrição dos Níveis do Global Masters

Olá Comunidade! Nesta publicação você irá encontrar informações sobre os Níveis da Comunidade de Desenvolvedores e InterSystems Global Masters. Todos os membros do Global Masters podem alcançar vários Níveis dependendo das contribuições feitas na Comunidade de Desenvolvedores e da atividade no Global Masters. Cada novo Nível libera novos tipos de desafios/tarefas e novos tipos de recompensas. Para subir de nível você precisa ganhar um número de distintivos para o próximo nível. Distintivos podem ser ganhos completando vários desafios no Global Master. Atualmente temos 6 Níveis: 0. Insider (você começa aqui)1. Advocate2. Specialist 3. Expert4. Ambassador5. VIP ➡️ Coloque o cursos do mouse sobre o distintivo para verificar como conseguí-lo. Nome do Nível Regras Nível Insider Você inicia no nível "Insider" quando você se junta ao Global Masters. Nível Advocate O próximo nível requer dois distintivos dos relacionados abaixo: DC Author InterSystems Researcher DC Commenter DC Problem Solver DC Translator 1.500 pontos 500 pontos 300 pontos 1.000 pontos 100 pontos Pull RequestContributor InterSystemsOpen Exchange Developer DC Recruiter Best PracticesAuthor Global Masterof the Month 500 pontos 1.000 pontos 600 pontos 1.000 pontos 1.000 pontos Ou seja, bastaria fazer uma pergunta, responder uma pergunta ou convidar um amigo para a Comunidade! Nível Specialist O Nível Specialist requer 3 distintivos da lista abaixo: InsightfulCommenter750 pontos Insightful Author1.500 pontos Advanced PullRequest Contributor500 pontos/cada PR PopularWriter600 pontos ReporterBadge7.500 pontos CuriousMember2.000 pontos Masterof Answers4.000 pontos PopularApp badge2.500 pontos Bronze OpenExchange Developer10.000 pontos BronzeRecruiter600 pontos/cada RecognizableBest Practices Author3.000 pontos Distintivos de Conquistas Anuais DC Best-SellingAuthor DC Expert DC Opinion Leader InterSystemsDeveloperof the Year InterSystemsApplicationof the Year Não é fácil alcançar o nível specialist mas, é possivel! Nível Expert O Nível Expert requer 4 dos distintivos abaixo: ExpertCommenter1.500 pontos Expert Author3.000 pontos Bronze PullRequest Contributor500 pontos/cada PR NotableWriter2.500 pontos BloggerBadge15.000 pontos Thorough Member5.000 pontos Bronze Masterof Answers8.000 pontos Bronze Popular App badge5.000 pontos Silver OpenExchange Developer25.000 pontos SilverRecruiter600 pontos/cada Bronze BestPractices Author7.000 pontos Distintivos de Conquistas Anuais Bronze Best-Selling Author BronzeExpert BronzeOpinion Leader Bronze InterSystemsDeveloper of the Year Bronze InterSystemsApplication of The Year É bem difícil se tornar um membro do nível expert em Plataforma de Dados! E ficamos felizes em conhecer esses caras! Nível Ambassador O Nível Ambassador requer 4 dos distintivos abaixo: RecognizableCommenter7.500 pontos RecognizableAuthor15.000 pontos Silver PullRequest Contributor500 pontos/cada PR FamousWriter7.000 pontos Influencerbadge40.000 pontos InquisitiveMember15.000 pontos Silver Masterof Answers20.000 pontos Silver Popular App badge7.500 pontos Gold OpenExchange Developer50.000 pontos GoldRecruiter600 pontos/cada Silver BestPractices Author10.000 pontos Distintivos de Conquistas Anuais Silver Best-Selling Author SilverExpert SilverOpinion Leader Silver InterSystemsDeveloper of the Year Silver InterSystemsApplication of The Year Nível VIP O Nível VIP requer 5 distintivos dos relacionados abaixo: PowerfulCommenter15.000 pontos PowerfulAuthor30.000 pontos Gold PullRequest Contributor500 pontos/cada PR GoldWriter20.000 pontos OpinionMaker75.000 pontos SocraticMember30.000 pontos Gold Masterof Answers40.000 pontos Gold PopularApp Badge12.500 pontos Platinum Popular App badge100.000 pontos PlatinumRecruiter600 pontos/cada Gold BestPractices Author15.000 pontos Distintivos de Conquistas Anuais Gold Best-Selling Author Gold Expert Gold Opinion Leader Gold InterSystemsDeveloper of the Year Gold InterSystemsApplication of The Year Bronze Advocateof the Year Silver Advocateof the Year Gold Advocateof the Year Este é um nível fantástico! Obrigado pela sua incrível colaboração! Então... Verifiquem as informações adicionais sobre o Global Masters: Como se juntar ao InterSystems Global Masters Distintivos do Global Masters: descrição e regras para obtê-los Se você ainda não se juntou ao Global Masters , não perca tempo e junte-se já! Fiquem a vontade para deixar suas perguntas nos comentários desta publicação.
Artigo
Kevin Koloska · Nov. 15, 2022

Construção de um repositório FHIR + o servidor de autorização/recurso OAuth2 no IRIS for Health - Parte 2

Construção de um repositório FHIR + o servidor de autorização/recurso OAuth2 no IRIS for Health - Parte 2 IRIS para #FHIR #OAuth2 #InterSystems de Saúde Olá, caros desenvolvedores! Neste artigo, vamos focar-nos na OAuth2, um protocolo que é cada vez mais utilizado em combinação com o FHIR para realizar permissões. Nesta parte 1, iniciaremos o contentor Docker para IRIS para a Saúde e Apache, configuraremos a função do servidor de autorização OAuth2 na IRIS for Health, acedemos-lhe a partir da ferramenta de desenvolvimento do Postman REST e obteremos um token de acesso. Além disso, na segunda parte e além, adicionaremos a funcionalidade de repositório FHIR à IRIS for Health, adicionamos a configuração do servidor de recursos OAuth2 e explicaremos como executar consultas de FHIR com fichas de acesso de dentro do Carteiro. Vários artigos excelentes já foram publicados dentro da comunidade de desenvolvedores para explicar a funcionalidade OAuth2 dos produtos InterSystems; No entanto, gostaria de explicar mais uma vez como criar a versão mais recente. Implementação do Quadro de Autorização Aberta IRIS InterSystems (Oauth 2.0) - Parte 1 Neste artigo, utilizaremos a versão mais recente da InterSystems IRIS for Health 2020.3 Preview Edition. Se pretender criar um ambiente baseado neste artigo, não se esqueça de utilizar esta ou uma versão posterior do kit. Algumas funcionalidades não estão incluídas em produtos antes desta versão. Preparativos preliminares O primeiro passo é fazer os preparativos preliminares. Há muitas coisas para se preparar para construir um ambiente seguro. IRIS for Health 2020.3 Preview Edition só está disponível como uma versão de recipiente Docker. (InterSystems Docker Hub/IRIS for Health)Para executar a configuração OAuth2, também terá de executar o servidor web e a configuração SSL. Neste artigo, utilizaremos Apache.Quando configurar o SSL em Apache, o certificado de configuração SSL deve corresponder ao nome de anfitrião do servidor. Por favor, tenha isso em conta. Obtenha ficheiros de amostra do repositório Do GitHub interssistema-jp O estivador-compose.yml/Dockerfile e outros ficheiros de amostras utilizados nesta configuração estão disponíveis no repositório GitHub para a comunidade de desenvolvedores intersystems.Em primeiro lugar, desaperte este ficheiro no seu ambiente utilizando o seguinte comando. (Também pode fazê-lo a partir do anexo a este artigo.) Este docker-compose.yml/Dockerfile e outros ficheiros são criados referindo-se à aplicação iris-webgateway-exemplo publicada no OpenExchange. https://github.com/Intersystems-jp/IRIS4H-OAuth2-handson.git de clone de Git Alterar a configuração de acordo com o kit utilizado Neste ficheiro docker-compose.yml, estão configurados dois contentores: o contentor IRIS for Health e o contentor Apache (httpd) serão criados pelo comando de construção de estivadores. O ficheiro docker-compose.yml, disponível no GitHub, refere IRIS for Health Community Edition Preview Edition (2020.3.200.0). A Edição Comunitária pode ser utilizada para a avaliação dos produtos InterSystems. íris: Imagem: loja/intersistemas/irishealth-comunidade:2020.3. 0.200. 0 Se estiver a utilizar uma versão diferente (versão oficial ou mais recente), altere esta parte da especificação. O recipiente Apache será construído com o conteúdo do Dockerfile, que requer um kit WebGateway para ligar ao IRIS a partir de Apache.Para obter informações sobre como obter este kit, os parceiros da InterSystems podem visitar o site de descarregamento do WRC ou contactar o Centro de Suporte do WRC. Se tiver mais alguma questão, contacte-nos neste endereço. Modifique as seguintes partes do Dockerfile dependendo do produto que obteve. Independentemente do sistema operativo da máquina hospedeira (Windows/Ubuntu/CentOS), a plataforma será lnxubuntux64 porque o sistema operativo do recipiente httpd base é Debian. Versão ARG=2020.3. 0.200. 0 Plataforma ARG =inxubuntux64 ADD WebGateway-${versão}-${plataforma}.tar.gz /tmp/ Preparação de um certificado SSL No passo seguinte, é preparado um certificado SSL. Ao aceder à autorização OAuth2, o certificado SSL definido no servidor web é verificado para ver se corresponde ao URL a ser acedido. Não é necessário utilizar um certificado oficial; é possível utilizar o OpenSSL, etc. Introduza o nome de anfitrião no campo "Nome Comum" ao criar o certificado. Além disso, uma vez que o certificado que criou será carregado automaticamente no momento do lançamento, tem de modificar o ficheiro para que este não exija uma palavra-passe. Por favor, consulte o seguinte comando. $ openssl rsa -in cert.key.org -out cert.key Coloque os ficheiros CRT e KEY criados no mesmo diretório que o Dockerfile, com os nomes de ficheiros server.crt/servidor.key respectivamente. Além de o utilizar com o servidor web Apache, precisará de um certificado SSL para a configuração OAuth2. Não precisa de introduzir um nome de anfitrião, etc., mas precisa de criar três conjuntos. (Nas seguintes configurações, aparecem como auth.cer/auth.key , cliente.cer/cliente.key, resserver.cer/resserver.key) Construindo um estivador e iniciando um contentor de estivadores Agora está finalmente pronto! Além dos quatro ficheiros que descarregou, tem agora um conjunto de instalações web gateway e dois certificados SSL no seu diretório. Preste atenção às permissões de acesso e execução de cada ficheiro. (Por exemplo, adicionei a permissão de execução a webgateway-entrypoint.sh.) estiva-composição construção estiva-composição -d Uma vez lançado, utilize o comando do PS para verificar se ambos os contentores estão a funcionar. Nome do recipiente Apache:_web IRIS for Health:store/intersystems/irishealth-community container name:2020.3.0.200.0 (ou outro nome dependendo do conjunto) Agora tente aceder ao portal de gestão nas seguintes três formas. Se o terceiro método funcionar, a sua configuração SSL através do servidor web Apache é um sucesso! http://[nome anfitrião]:52773/csp/sys/UtilHome.csp:Este URL é acedido através do Apache Privado no contentor IRIS. Não passa pelo Apache configurado. http://[hostname]/csp/sys/UtilHome.csp: Este URL fornece acesso ao portal de gestão através do Apache configurado. https://[hostname]/csp/sys/UtilHome.csp: Este URL fornece acessoao portal de gestão utilizando uma ligação SSL via Apache, que configurae. Criação de uma configuração SSL Agora que a IRIS for Health está a funcionar e temos acesso ao portal de gestão, vamos criar a configuração SSL para os preparativos finais. Aceda ao Portal de Gestão -> Administração do Sistema -> Configuração SSL/TLS de Segurança -> e crie três configurações SSL utilizando os três pares de chaves de certificado que preparou. Pode escolher o nome que quiser, mas neste artigo utilizaremos SSL4AUTH/SSL4CLIENT/SSL4RESSERVER, de acordo com artigos anteriores sobre AAuth2. *Sobre a partilha de diretórios entre anfitriões e contentores Especificar os seguintes volumes no ficheiro de composição de estiva indica a localização atual do diretório de anfitriões = /ISC no recipiente. Utilize este diretório ao especificar o ficheiro do certificado nas definições acima, etc. Volumes: - .:/ Isc Este diretório conterá não só ficheiros de ficheiros, mas também ficheiros de base de dados IRIS e ficheiros de configuração. Consulte o documento "Persistente %SYS for Persistent Instance Data Storage" para obter mais informações. Configuração OAuth2 na IRIS para a Saúde Agora é hora de entrar nos detalhes do acesso ao IRIS para a Saúde usando OAuth2! Configurar o servidor de autorização OAuth2 Primeiro, vamos configurar o servidor de autorização OAuth2! Vá ao Portal de Gestão → Administração do Sistema → Segurança → OAuth 2.0 → Server. Siga as instruções abaixo para configurar as definições. Definições no separador "Geral" Ponto final do transmissor: Nome anfitrião Insira o nome de anfitrião. Ponto final do transmissor: Prefixo Pode introduzir o valor da sua escolha, mas aqui definimo-lo como "authserver". Tipos de subvenções apoiadas Neste artigo, só usaremos o "Código de Autorização", mas se quiser testar outros "Tipos de subvenções", por favor adicione uma marca de verificação. Adicione também uma marca de verificação à "Autorização JWT" SSL/TLS de configuração Especifique a configuração SSL que acabou de adicionar. No separador "Âmbitos", clique em "Adicionar um âmbito suportado" para os adicionar. Mais tarde, o ecrã de início de sessão de código de autorização apresentará a "descrição" que escreveu aqui. Não altere o separador "Intervalos" a partir do valor predefinido. No separador "Definições JWT", vamos selecionar "RS512" como algoritmo de assinatura. No último separador "Personalização", altere a especificação "Token Class Generation" para %OAuth2.Server.JWT. Uma vez introduzido a informação, clique no botão "Guardar" para guardar a configuração. Agora que tem a configuração necessária para que a IRIS for Health funcione como um servidor de autorização OAuth2, está pronto para tentar! Vamos tentar aceder-lhe do Carteiro e ver se conseguimos um sinal de acesso! No entanto, antes de o fazermos, temos de realizar duas outras configurações. Adicionar uma descrição do cliente Primeiro, adicione a informação do Carteiro a que pretende aceder como cliente OAuth2. O registo do cliente OAuth2 pode ser adicionado através de registo dinâmico ou outros métodos. Clique em "Descrição do Cliente" na página de configuração do servidor para continuar. Clique em "Criar descrição do cliente" para adicionar uma entrada. Siga as instruções abaixo para criar uma subscrição do cliente. Definições no separador "Geral" Nome Insira um nome à sua escolha. Neste caso, escolhemos "carteiro". Tipo de Cliente Selecione "Confidencial" Redirecionamento de URL Clique no botão "Adicionar URL" para adicionar um URL de redirecionamento para o Carteiro. https://www.getpostman.com/oauth2/callback como URL de redirecionamento para carteiro. Tipos de subvenções apoiadas Especifique o mesmo "Código de Autorização" que foi configurado nas definições do servidor de autorização OAuth2. (Predefinição) Adicione um controlo se quiser testar outros tipos de bolsas também. No entanto, as definições devem ser as mesmas que a configuração do servidor de autorização. Verifique também a caixa "Autorização JWT". Especificar aqui Algoritmo de assinatura autenticado Verifique "autorização JWT" ao abrigo de tipos de subvenção suportados para poder selecioná-la. Selecione "RS512". Uma vez inserida a informação, clique no botão "Guardar" para guardar a descrição do cliente. Clique no separador "Referências ao Cliente" para ver o ID do cliente e a chave privada do cliente para esta entrada. Você vai precisar desta identificação e chave privada quando fizer testes do POSTMAN. Adicionar uma aplicação web Deve ser adicionado outro parâmetro importante antes de aceder ao mesmo a partir do POSTMAN. O ecrã de configuração do servidor de autorização OAuth2 determinou que o ponto final para esta configuração é https:///authserver/oauth2. Para que o acesso a este ponto final seja tratado corretamente pela IRIS, precisamos de adicionar uma aplicação web para esta rota URL. Vá à Administração do Sistema→SSecurity →Applicações→Web Applications, e clique em "Criaruma nova aplicação Web". É fornecido um modelo de aplicação web OAuth2, por isso selecione primeiro "/oauth2" em "Copy from". Definições de "Editar aplicações web" Cópia de "/oauth2": Selecione sempre este primeiro na lista de drop-down. Nome /authserver/oauth2 Ativação Verifique o botão de rádio "REST". Depois de introduzir cada valor, guarde-o. Teste OAuth2 do POSTMAN Vamos testá-lo do CARTMAN. Os testes também podem ser feitos a partir de outras ferramentas ou do próprio programa. A explicação detalhada do POSTMAN está fora do âmbito deste artigo, mas um ponto a notar é que a verificação do certificado SSL deve ser alterada para OFF nas definições do POSTMAN. Depois de criar um novo pedido no POSTMAN, selecione "OAuth 2.0" no separador TIPO DE PERMISSÃO e clique em "Obter Novo Token de Acesso". No ecrã seguinte, insira os valores da seguinte forma. Configurações「GET NOVO TOKEN DE ACESSO」 Nome simbólico Insira um nome à sua escolha. Tipo de subvenção Escolha "Código de Autorização". URL de retorno https://www.getpostman.com/oauth2/callback Auth URL https:///authserver/oauth2/authorize Insira o valor do ponto final +/authorize. Ao adicionar ?ui_locales=ja, pode exibir o ecrã de login em japonês. Auth Token URL https:///authserver/oauth2/token. Introduza o valor do ponto final +/token. ID do cliente Introduza o ID do cliente apresentado no separador Referências ao Cliente depois de guardar a descrição do cliente. Segredo do Cliente Introduza a chave privada do cliente, que é apresentada no separador Referências ao Cliente depois de guardar a descrição do cliente. Campo Introduza o âmbito guardado na configuração do servidor de autorização, por exemplo "scope1". Também pode especificar vários campos separados por espaços. Estado Introduza o parâmetro de estado "Estado", que é utilizado para contramedidas contra o CSRF. Não é explicitamente usado, mas não pode ser deixado vazio, por isso entramos numa corda arbitrária. Depois de introduzir as definições e clicar no botão "Request Token", verá o ecrã de login como mostrado abaixo. Tente iniciar sedução com a informação do utilizador (por exemplo, _SYSTEM) que tem acesso ao portal de gestão. No ecrã seguinte após o início de sessão, pode decidir conceder permissões a esta aplicação. Depois de clicar em "Permitir", se o token de acesso for apresentado no ecrã seguinte, como mostrado abaixo, o teste de aquisição de token de acesso é bem sucedido! Teste OpenID Connect IRIS for Health pode realizar o processamento de autorização OAuth2, bem como o processamento de autenticação compatível OpenID Connect.Para mais detalhes consulte este documento. Nesta configuração, o OpenID Connect está ativado, por isso vamos testar se também conseguimos obter o token OpenID Connect ID! É fácil de implementar. No ecrã GET NEW ACCESS TOKEN, adicione "openid" ao seu âmbito e faça um pedido. O OpenID Connect também será apresentado na página de pedido de permissão. Depois de iniciar sessão e dar as suas permissões, certifique-se de que também obtém um token de identificação (id_token) quando vir o ecrã seguinte. (Pode ser necessário rolar.) Conseguiu o sinal de acesso e id_token? Embora alguns preparativos, como certificados, exijam um pouco de tempo e esforço, poderíamos construir um servidor de autorização OAuth2 com tal simplicidade usando IRIS para a Saúde, uma plataforma de base de dados. Na próxima parte desta série, vou finalmente mostrar-lhe como construir um repositório FHIR, registar o repositório FHIR como um servidor de recursos OAuth2, e mostrar-lhe como descansar o repositório FHIR usando um token de acesso OAuth2 da POSTMAN. Ir para a publicação inicial escrita por @Shintaro Kaminaka
Artigo
Yuri Marx · jan 13, 2022

IntegratedML walkthrough - Predição de Doença cardíaca

O recurso InterSystems IRIS IntegratedML é usado para obter previsões e probabilidades usando a técnica AutoML. O AutoML é uma tecnologia de Machine Learning usada para selecionar o melhor algoritmo/modelo de Machine Learning para prever status, números e resultados gerais com base nos dados anteriores (dados usados para treinar o modelo AutoML). Você não precisa de um Cientista de Dados, pois o AutoML testará os algoritmos de Machine Learning mais comuns e selecionará o melhor algoritmo para você, com base nos recursos de dados analisados. Veja mais aqui, neste artigo. O InterSystems IRIS possui um mecanismo AutoML integrado, mas também permite que você use H2O e DataRobot. Neste artigo, mostrarei a você cada etapa para usar o mecanismo InterSystems AutoML. Passo 1 - Download a aplicação de exemplo e faça os exercícios 1. Vá em https://openexchange.intersystems.com/package/Health-Dataset 2. Clone/git pull do repositório para qualquer diretório local $ git clone https://github.com/yurimarx/automl-heart.git 3. Abra o terminal, vá no diretório do projeto e execute: $ docker-compose build 4. Execute o IRIS no container: $ docker-compose up -d Passo 2 - Entendendo o cenário de negócio e os dados disponíveis O cenário de negócio é para prever, usar dados passados e assim prever doenças cardíacas. Os dados para fazer isto são: SELECT age, bp, chestPainType, cholesterol, ekgResults, exerciseAngina, fbsOver120, heartDisease, maxHr, numberOfVesselsFluro, sex, slopeOfSt, stDepression, thallium FROM dc_data_health.HeartDisease Segue o dicionário de dados da tabela (source: https://data.world/informatics-edu/heart-disease-prediction/workspace/data-dictionary): Column name Type Description age Integer em anos sex Integer (1 = masculino; 0 = feminino) chestPainType Integer Valor 1: angina típica -- Value 2: agina atípica -- Value 3: angina não presente -- Value 4: assíntomático bp Integer Pressão sanguínea (in mm Hg no momento da admissão no hospital) cholesterol Integer Colesterol em mg/dl fbsOver120 Integer (açucar no sangue > 120 mg/dl) (1 = true; 0 = false) ekgResults Integer Resultados do eletrocardiograma -- Valor 0: normal -- Valor 1: tem ST-T com ondas anormais (onda T com inversões e/ou elevação ST ou depressão de > 0.05 mV) -- Valor 2: apresenta provável hipertrofia ventricular no lado esquerdo maxHr Integer Pulsação máxima do coração atingida exerciseAngina Integer Angina induzida a exercícios (1 = yes; 0 = no) stDepression Double Depressão ST induzida por exercício slopeOfSt Integer A inclinação do segmento ST de exercício de pico -- Valor 1: ascendente -- Valor 2: regular -- Valor 3: descendente numberOfVesselsFluro Integer Número de vasos principais (0-3) coloridos por fluoroscopia thallium Integer 3 = normal; 6 = defeito corrigido; 7 = defeito reversível heartDisease String Valor 0: < 50% estreitamento do diâmetro -- Valor 1: > 50% estreitamento do diâmetro A heartDisease é a propriedade que precisamos prever. Passo 3 - Preparar o treinamento dos dados A tabela HeartDisease tem 270 linhas. Receberemos 250 para treinar nosso modelo de previsão. Para fazer isso, vamos criar a seguinte view dentro do Management Portal > Systems Explorer > SQL: CREATE VIEW automl.HeartDiseaseTrainData AS SELECT * FROM SQLUser.HeartDisease WHERE ID < 251 Passo 4 - Preparar validação dos dados Obteremos 20 linhas para validar os resultados da previsão. Para fazer isso, vamos criar a seguinte view dentro do Management Portal > Systems Explorer > SQL: CREATE VIEW automl.HeartDiseaseTestData AS SELECT * FROM SQLUser.HeartDisease WHERE ID > 250 Passo 5 - Criar o modelo AutoML para a predição O IntegratedML permite criar um modelo AutoML para fazer previsões e probabilidades (veja mais em https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML_BASICS). Para fazer isso, vamos criar o seguinte modelo dentro do Management Portal > Systems Explorer > SQL: CREATE MODEL HeartDiseaseModel PREDICTING (heartDisease) FROM automl.HeartDiseaseTrainData O modelo do qual vamos obter dados de treinamento (learning) é da view automl.HeartDiseaseTrainData. Passo 6 - Executar o treinamento Para fazer isso, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL: TRAIN MODEL HeartDiseaseModel Passo 7 - Validar o modelo treinado Para validar o treinamento, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL: VALIDATE MODEL HeartDiseaseModel FROM automl.HeartDiseaseTestData Nós validamos o HeartDiseaseModel usando dados de teste da view automl.HeartDiseaseTestData. Passo 8 - Obter as métricas de validação Para ver as métricas de validação do processo de validação, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL: SELECT * FROM INFORMATION_SCHEMA_ML_VALIDATION_METRICS Para entender os resultados retornados, consulte: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML_VALIDATEMODEL. A documentação do InterSystems IRIS detalha o seguinte dos resultados da validação: A saída de VALIDATE MODEL é um conjunto de métricas de validação que podem ser visualizadas na tabela INFORMATION_SCHEMA_ML_VALIDATION_METRICS. Para modelos de regressão, as seguintes métricas são salvas: Variance R-squared Mean squared error Root mean squared error Para modelo de classificação, as métricas a seguir são retornadas: Precision — Isso é calculado dividindo o número de verdadeiros positivos pelo número de positivos previstos (soma de verdadeiros positivos e falsos positivos). Recall — Isso é calculado dividindo o número de verdadeiros positivos pelo número de reais positivos (soma de verdadeiros positivos e falsos negativos). F-Measure — Isso é calculado pela seguinte expressão: F = 2 * (precision * recall) / (precision + recall) Accuracy — Isso é calculado dividindo o número de verdadeiros positivos e verdadeiros negativos pelo número total de linhas (soma de verdadeiros positivos, falsos positivos, verdadeiros negativos e falsos negativos) em todo o conjunto de teste. Passo 9 - Execute as predições usando seu novo modelo AutoML - o último passo! Para ver as métricas de validação do processo de validação, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL: SELECT *, PREDICT(HeartDiseaseModel ) AS heartDiseasePrediction FROM automl.HeartDiseaseTestData Compare as colunas heartDisease (valor real) e heartDiseasePrediction (o valor de predição) Aproveite!
Anúncio
Danusa Calixto · Maio 11, 2023

Perguntas do Mês: Abril 2023

Olá Desenvolvedores, No mês de Abril, foram postadas 65 novas perguntas na Comunidade de Desenvolvedores EN : Questions #InterSystems IRIS NOT %INLISTby Matjaz Murko SQL CREATE DATABASE from templateby Dmitry Maslennikov How to list all the tables available in a current database?by Evgeny Shvarov Port Authority Error - ERROR #794: Doc DB IRISInteroperabilityPorts in namespaceby Scott Roth DML exportby Eduard Lebedyuk Why loading X509 credentials fails when called under context of a CSP request ?by Norman W. Freeman How To Create XML Document in BPLby Sridhar Sanjeevi sharing a deployment on IRIS Cloud SQLby Robert Cemper how to quickly move data to oracleby water huang confusing content on IRIS Cloud SQLby Robert Cemper How can I change the default string collation of a SQL stored procedure?by Pravin Barton Any chance I can provide a password to a vanilla iris docker instance?by Evgeny Shvarov IRIS start and stop too slowby Dmitry Maslennikov Code to copy class definition from one Namespace to another?by Ben Spead Quick Process to Start/Stop an Objectby Scott Roth Read a long Stream into JSON Dynamic Object - MAXSTRING errorby Oliver Wilms Error with AutoMLby andrey mikov Simple example of SOAP service to transfer files between systemsby Punit Yogesh Shah IRIS cloud SQL in contest - false promiseby Robert Cemper Dissecting an OREFby Jeffrey Drumm Error when changing legacy VB.Net code from InterSystems.Data.CacheClient to InterSystems.Data.IRISClientby Jon Astle Allow string or number values for a property with JSON adaptorby Pravin Barton VSCode: "ObjectScript Class" As "New File" Option?by Jean Millette Is there a way to convert svg to jpg or pngby Wanbo Wang ERROR #5034: Invalid status code structure - Writing to Fileby Scott Roth Security Advisor - Application Errorby Scott Roth Bulk FHIR DataLoaderby Ron Sweeney Compile for a previous version of Health Connect?by Adam Lees Restoring a backupby William Caldwell Indexing on a Multivalue fileby Mindy Caldwell REST API Versioning in Headerby Michael Davidovich Interoperability "Productions" Stop and Start from command lineby Phillip Wu Using %Stream.FileBinary's ClassMethods to set where a Stream is savedby Punit Yogesh Shah How to escape ')#' inside a CSP Runtime Expression?by Ben Spead Issues with Publishing Power BI Reports with DirectQuery Connection to IRIS?by Jean Millette Memory leak and IRIS container freeze... or just my curvy handsby Rostislav Dublin #Ensemble SQL query in Dropdownby Rochdi Badis Transform HL7 message to multi-line output flat fileby Doug Strzalko How to Download files using %Net.HttpRequestby Thembelani Mlalazi Refreshing Comboby Rochdi Badis Find a specific column in a dataComboby Rochdi Badis Uninstalling Ensembleby Colin Brough i meet a problem when use %SQLGatewayConnectionby water huang Basics for JSON in ensembleby Joe Jones Show display mode in SQL queryby Rochdi Badis Collecting all elements of a Productionby Andrew Makinson Custom Dashboardby Larry Pinsky #HealthShare How to know which users did patient searches on clinical viewerby Ephraim Malane What type of inbound connection send an ACK back by default?by Jason Pribble #Caché ERROR #6301: SAX XML Parser Error: XML or TEXT declaration must start at line 1, column 1by Colin Brough Document SDA deletionby Akshay Pandey Using %Stream.FileCharacter to create and append to files - Permissions Issueby Scott Roth Breaking a string into wordsby Anna Golitsyna Replace text by argsby Kurro Lopez Need to understand message in console logby Kevin McGinn Post form data and redirect not workingby Tiana Andria checksum calculation, , shift byteby Sergio Carvalho import global (2012.5 to 2018.1.4)by Lucas Galdino How to Set and Check session for CSP Pageby Vinay Purohit #InterSystems IRIS BI (DeepSee) I need to group two or more values into one. What is the right syntax ? WITH [DIMENSIONS].[GENDERCAL] AS [Gender].[H1].[Gender].Currentmember WHEN [Gender].[H1].[Gender].[F] THEN 'FEMALE' WHEN [Gby Jacinto Busquets #InterSystems IRIS for Health Docker container - enable TLS/HTTPS on private web serverby John McBride Need to have TCP/IP HL7 Inbound service/adapter just write to file - no persistence anywhere in the engineby Ryan Hulslander After upgrade SYS.Task.BackupAllDatabases notby Mark OReilly IRIS/REST, how could I get all HTTP headers?by Dmitry Baranov IRIS on Azure, access through WSL in Win, needed directories not visibleby Prashant Sonnaik Aqui estão as Perguntas de Abril escolhidas pelos Especialistas da InterSystems: 📌 Quick Process to Start/Stop an Object por @Scott.Roth 📌 Replace text by args por @Francisco.López1549 📌 Code to copy class definition from one Namespace to another? por @Benjamin.Spead Estas perguntas estarão destacadas com a tag #Key Question, e seus autores receberão o selo Key Question no Global Masters. Parabéns, e obrigada a todos por suas perguntas. Continuem a perguntar! Vejo vocês no próximo mês😉
Artigo
Danusa Calixto · Maio 9, 2023

Criando uma API REST com autenticação JWT no ObjectScript

# Prefácio O InterSystems IRIS a partir da versão 2022.2 inclui a capacidade de autenticar uma API REST usando JSON web tokens (JWTs). Esse recurso aprimora a segurança ao limitar quando e com que frequência as senhas são transferidas pela rede, além de definir um tempo de expiração para o acesso. O objetivo deste artigo é servir como um tutorial de como implementar uma API REST simulada usando o InterSystems IRIS e bloquear o acesso a ela com JWTs. ***OBSERVAÇÃO*** NÃO sou uma desenvolvedora. Não faço alegações sobre a eficiência, escalabilidade ou qualidade das amostras de código que uso neste artigo. Estes exemplos são APENAS para fins educacionais. Eles NÃO se destinam a código de produção. # Prólogo Depois de fazer esse aviso, vamos explorar os conceitos que serão analisados aqui. ## O que é REST? REST é um acrônimo para "REpresentational State Transfer". É uma arquitetura para os programas se comunicarem com os aplicativos da Web e acessarem as funções publicadas por esses aplicativos. ## O que é um JWT? Um JSON web token (JWT) é uma maneira compacta e segura para o URL de representar informações transferidas entre duas partes que podem ser assinadas digitalmente, criptografadas ou ambos. Se você quiser saber mais sobre os JWTs e outras classes da Web JSON compatíveis com o InterSystems IRIS, leia [esta postagem](https://community.intersystems.com/post/reference-json-web-classes). # Colocando a mão na massa ## De acordo com a especificação Para consumir uma API REST, primeiro precisamos ter uma API REST. Disponibilizei uma [amostra de especificação da OpenAPI 2.0](https://gist.github.com/greycatsec/4bdb1c8b5ddd4b06da2390184870b8c1) para um RPG de mesa (TTRPG). Ela será usada nos exemplos deste artigo. Há vários exemplos de como escrever a sua online, então fique à vontade para se aprofundar nisso, mas a especificação é apenas um modelo. A única coisa que faz é informar como usar a API. ## Geração da API REST O InterSystems IRIS oferece uma maneira bastante organizada de gerar stubs de código da API REST. [Esta documentação](https://docs.intersystems.com/iris20223/csp/docbook/DocBook.UI.Page.cls?KEY=GREST_mgmnt#GREST_mgmnt_api) oferece uma maneira completa de gerar stubs de código. Fique à vontade para usar a especificação da OpenAPI 2.0 que forneci na seção anterior. ## Implementação É aqui que vamos ir a fundo. A seção de geração criará três arquivos `.cls` para você: 1. `impl.cls` 2. `disp.cls` 3. `spec.cls` Vamos passar a maior parte do nosso tempo no `impl.cls`, talvez mexer no `disp.cls` para depurar e não encostar no `spec.cls`. No `impl.cls`, há stubs de código para os métodos que `disp.cls` chamará quando receber uma solicitação da API. A especificação da OpenAPI definida nessas assinaturas. Ela informa o que você quer que seja feito, mas é você quem precisa implementar isso no final. Então, vamos fazer isso! ### Criação Uma das maneiras que usamos um banco de dados é adicionando objetos a ele. Esses objetos servem como uma base para outras funções. Sem objetos existentes, não haverá nada para ver, então vamos começar com nosso modelo de objeto: um `Character` (personagem)! Um `Character` precisa ter nome e, como opção, especificar a classe, a raça e o nível. Veja abaixo um exemplo de implementação da classe `TTRPG.Character` ```objectscript Class TTRPG.Character Extends %Persistent { Property Name As %String [ Required ]; Property Race As %String; Property Class As %String; Property Level As %String; Index IndexName On Name [ IdKey ]; ClassMethod GetCharByName(name As %String) As TTRPG.Character { set character = ##class(TTRPG.Character).%OpenId(name) Quit character } } ``` Já que queremos armazenar objetos `Character` no banco de dados, precisamos herdar a classe `%Persistent`. Queremos que seja possível procurar personagens pelo nome, em vez de atribuir uma chave de ID arbitrária. Portanto, definimos o atributo `[ IdKey ]` no Index para a propriedade `Character.Name`. Isso também garante a exclusividade do nome do personagem. Com nosso modelo de objeto base definido, podemos analisar a implementação da API REST. O primeiro método que vamos explorar é o `PostCharacter`. Como visão geral, esta parte consome uma solicitação HTTP POST para o endpoint `/characters` com nossas propriedades de personagem definidas no corpo. Ela deve pegar os argumentos fornecidos e criar um objeto `TTRPG.Character` a partir deles, salvá-lo no banco de dados e informar se teve êxito ou não. ```objectscript ClassMethod PostCharacter(name As %String, class As %String, race As %String, level As %String) As %DynamicObject { set results = {} // cria o retorno %DynamicObject //cria o objeto character set char = ##class(TTRPG.Character).%New() set char.Name = name set char.Class = class set char.Race = race set char.Level = level set st = char.%Save() if st { set charInfo = {} set charInfo.Name = char.Name set charInfo.Class = char.Class set charInfo.Race = char.Race set charInfo.Level = char.Level set results.Character = charInfo Set results.Status = "success" } else { Set results.Status = "error" Set results.Message = "Unable to create the character" } Quit results } ``` Agora que podemos criar personagens, como buscamos aquele que acabamos de criar? De acordo com a especificação da OpenAPI, o endpoint `/characters/{charName}` permite a busca de um personagem pelo nome. Buscamos a instância do personagem, se ela existir. Se não existir, retornamos um erro para informar ao usuário que não existe um personagem com o nome fornecido. Isso é implementado no método `GetCharacterByName`. ```objectscript ClassMethod GetCharacterByName(charName As %String) As %DynamicObject { // Cria um novo objeto dinâmico para armazenar os resultados Set results = {} set char = ##class(TTRPG.Character).GetCharByName(charName) if char { set charInfo = {} set charInfo.Name = char.Name set charInfo.Class = char.Class set charInfo.Race = char.Race set charInfo.Level = char.Level set results.Character = charInfo Set results.Status = "success" } // Se nenhum character foi encontrado, define uma mensagem de erro no objeto dos resultados else { Set results.Status = "error" Set results.Message = "No characters found" } // Retorna o objeto dos resultados Quit results } ``` Mas isso é só o seu personagem. E todos os personagens que as outras pessoas criaram? Podemos ver esses personagens usando o método `GetCharacterList`. Ele consome uma solicitação HTTP GET para o endpoint `/characters` para compilar uma lista de todos os personagens no banco de dados e retorna essa lista. ```objectscript ClassMethod GetCharacterList() As %DynamicObject { // Cria um novo objeto dinâmico para armazenar os resultados Set results = {} set query = "SELECT Name, Class, Race, ""Level"" FROM TTRPG.""Character""" set tStatement = ##class(%SQL.Statement).%New() set qstatus = tStatement.%Prepare(query) if qstatus '= 1 { Do ##class(TTRPG.impl).%WriteResponse("Error: " _ $SYSTEM.Status.DisplayError(qstatus)) } set rset = tStatement.%Execute() Set characterList = [] while rset.%Next(){ Set characterInfo = {} Set characterInfo.Name = rset.Name set characterInfo.Race = rset.Race Set characterInfo.Class = rset.Class Set characterInfo.Level = rset.Level Do characterList.%Push(characterInfo) } if (rset.%SQLCODE < 0) {write "%Next failed:", !, "SQLCODE ", rset.%SQLCODE, ": ", rset.%Message quit} set totalCount = rset.%ROWCOUNT // Define as propriedades status, totalCount e characterList no objeto dos resultados Set results.Status = "success" Set results.TotalCount = totalCount Set results.CharacterList = characterList // Retorna o objeto dos resultados Quit results } ``` E essa é nossa API! A especificação atual não oferece uma maneira de atualizar ou excluir personagens do banco de dados, e isso fica como um exercício para o leitor! ## Configuração do IRIS Agora que implementamos nossa API REST, como fazemos a comunicação com o IRIS? No Portal de Gerenciamento, se você acessar a página `System Administration > Security > Applications > Web Applications`, poderá criar um novo aplicativo da Web. O nome do aplicativo é o endpoint que você usará ao fazer solicitações. Por exemplo, se o nome for `/api/TTRPG/`, as solicitações da API vão para `http://{IRISServer}:{host}/api/TTRPG/{endpoint}`. Para uma instalação do IRIS padrão local com segurança normal, é assim: `http://localhost:52773/api/TTRPG/{endpoint}`. Adicione uma boa descrição, defina o namespace desejado e clique no botão de opção para REST. Para ativar a autenticação JWT, selecione a caixa "Use JWT Authentication". O `JWT Access Token Timeout` determina a frequência com que o usuário precisará receber um novo JWT. Se você planeja testar a API por um longo período, recomendo definir esse valor como uma hora (3600 segundos) e o `JWT Refresh Token Timeout` (o período de renovação antes que o token expire para sempre) como 900 segundos. ![configuração do web app](/sites/default/files/inline/images/configuring_the_web_app_jwt_0.png) Agora que o aplicativo foi configurado, precisamos configurar o próprio IRIS para permitir a autenticação de JWT. É possível configurar essa opção em `System Administration > Security > System Security > Authentication/Web Session Options`. Na parte inferior, está o campo do emissor de JWT e o algoritmo de assinatura que será usado para assinar e validar os JWTs. O campo do emissor aparecerá na seção de informações do JWT e a finalidade é informar quem forneceu o token a você. Você pode defini-lo como "InterSystems". ![configuração da autenticação de JWT](/sites/default/files/inline/images/webauthentication_issuer.png) ## Hora de testar Está tudo configurado e implementado, então vamos testar! Carregue sua ferramenta favorita para criar solicitações de API (vou usar uma extensão do Firefox chamada RESTer nos exemplos) e vamos começar a construir solicitações da API REST. Primeiro, vamos tentar listar os personagens existentes. ![lista sem token](/sites/default/files/inline/images/list_no_token.png) Recebemos um erro 401 Unauthorized. Isso ocorreu porque não fizemos login. Você talvez esteja pensando: Elliott, não implementamos funcionalidade de login nessa API REST. Não tem problema, porque o InterSystems IRIS cuida disso para nós quando usamos a autenticação de JWT. Ele oferece quatro endpoints que podemos usar para gerenciar nossa sessão. São eles: `/login`, `/logout` `/revoke` e `/refresh`. Eles podem ser personalizados no `disp.cls` conforme o exemplo abaixo: ```objectscript Parameter TokenLoginEndpoint = "mylogin"; Parameter TokenLogoutEndpoint = "mylogout"; Parameter TokenRevokeEndpoint = "myrevoke"; Parameter TokenRefreshEndpoint = "myrefresh"; ``` Vamos acessar o endpoint `/login` agora. ![fazendo login](/sites/default/files/inline/images/logging_in.png) O corpo dessa solicitação não é exibido por medidas de segurança, mas ele segue esta estrutura JSON: ```json {"user":"{YOURUSER}", "password":"{YOURPASSWORD}"} ``` Em troca da senha, recebemos um JWT! Esse é o valor de "access_token". Vamos copiar isso e usar nas nossas solicitações futuras para não precisar sempre transmitir a senha. Agora que temos um JWT para autenticação, vamos tentar criar um personagem! Formatamos nossa solicitação conforme abaixo: ![criação de personagem](/sites/default/files/inline/images/creating_character.png) Usando o bearer token como cabeçalho no formato de " Authorization: Bearer {JWTValue}". Em uma solicitação curl, você pode escrever isso com `-H "Authorization: Bearer {JWTValue}"` Vamos criar outro personagem por diversão, usando os valores que você quiser. Agora, vamos tentar listar todos os personagens que existem no banco de dados. ![listando os personagens](/sites/default/files/inline/images/list_characters.png) Obtemos os dois personagens que criamos! E se só quisermos acessar um? Implementamos isso com o endpoint `/characters/{charName}`. Podemos formatar essa solicitação desta forma: ![buscando personagem específico](/sites/default/files/inline/images/retrieve_character.png) Essa é a nossa API REST em ação, pessoal! Quando concluir sua sessão, é possível sair no endpoint `/logout` usando seu JWT. Isso revogará e bloqueará o JWT para que não seja possível usá-lo novamente. # Conclusão O InterSystems IRIS a partir da versão 2022.2 inclui a capacidade de autenticar uma API REST usando JSON web tokens (JWTs). Esse recurso aprimora a segurança ao limitar o uso da senha e definir uma data de expiração para o acesso à API. Espero que este manual sobre como gerar uma API REST e protegê-la com JWTs pelo IRIS tenha sido útil. Me avise se foi! Agradeço qualquer feedback.
Anúncio
Angelo Bruno Braga · Out. 28, 2020

Pesquisa sobre a versão de prévia do IRIS Data Platform 2020.4 e IRIS for Health 2020.4 - precisamos de seus comentários !

Olá desenvolvedores, A InterSystems está propondo um novo e fácil desafio como parte do Global Summit 2020. Como vocês já sabem, as plataformas de dados IRIS Data Platform 2020.4 e IRIS for Health 2020.4 estão no momento em sua versão de prévia. Nós estamos buscando melhorar a experiência dos desenvolvedores que pretendem migrar dos lançamentos anteriores em contêineres de 2020 destes produtos para a versão prévia 2020.4Nós os convidamos para responder a pesquisa e ganhar 7000 pontos no Global Masters🎁 2 passos para participar do desafio:1️⃣ Atualize qualquer contêiner 2020.x para IRIS Data Platform 2020.4, ou IRIS for Health 2020.4 versão prévia.2️⃣ Após a atualização, nos forneça as seguintes informações: Seu nível de conhecimento em contêineres Docker? (iniciante, intermediário ou avançado) A plataforma que você realizou a atualização. Sua experiência - Como foi, o que você gostou, o que poderia ser melhor. Os arquivos docker-compose.yml (ou Dockerfile) e messages.log da atualização. Quais problemas (se ocorrerem) que você encontrou. Você já utilizou uma nova funcionalidade na versão 2020.4? Em caso positivo, de que você gostou ? ➫ Por favor envie estas informações para Olga Zavrazhnova em Olga.Zavrazhnova_CTR@intersystems.com até 6 de novembro de 2020🚩. Obrigado desenvolvedores por ajudar-nos a tornar as plataformas IRIS e IRIS for Health, cada vez mais a melhor escolha para desenvolvimento de aplicações de ponta. Você pode resgatar seus pontos por qualquer prêmio disponível no Global Masters. Não é um membro ainda ? Leia aqui sobre o Global Masters e junte-se ao programa ainda hoje!
Artigo
Larissa Prussak · Out. 26, 2021

Está no seu código - como a manutenção do software pode impactar positivamente a sua organização

As tecnologias da InterSystems são conhecidas por seus bancos de dados de alto desempenho, que suportam os sistemas e operações de muitas organizações. No entanto, um ingrediente chave para esse sucesso é a qualidade e a facilidade de manutenção de seu código. A qualidade do código pode afetar tudo, desde a velocidade e facilidade de corrigir bugs e fazer melhorias, até o desempenho geral de sua organização e sua capacidade de chegar à frente no mercado. Ao garantir que seu código seja sustentável, você pode reduzir aproximadamente 75% dos custos do ciclo de vida do sistema *. É por isso que, na George James Software, as soluções que construímos são sempre diretas e escritas em código de alta qualidade - porque sabemos que essa base sólida pode impactar positivamente o resto da sua organização. Com um sistema que pode ser mantido, você pode reduzir a manutenção geral, pois qualquer problema que ocorra é significativamente mais rápido de identificar e corrigir. Isso significa que você está livre para alocar tempo e orçamento para melhorias, permitindo que você obtenha o máximo valor de suas aplicações e, em última análise, dê um melhor suporte à sua organização. Fique atento às nossas próximas postagens sobre como é um sistema sustentável e as ferramentas que podem ajudá-lo a manter seu código sustentável, a fim de ajudá-lo a reduzir esses custos de manutenção. *Ref: C. Chen, R. Alfayez, K. Srisopha, B. Boehm and L. Shi, "Why Is It Important to Measure Maintainability and What Are the Best Ways to Do It?," 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C), 2017, pp. 377-378, doi: 10.1109/ICSE-C.2017.75.
Anúncio
Danusa Calixto · Ago. 19, 2022

Lançamento da Comunidade de Desenvolvedores, Julho 2022

Bem-vindos ao Lançamento de Julho 22 da Comunidade ! Fizemos recentemente algumas mudanças interessantes para sua experiencia na Comunidade da InterSystems: 📌 notificações como nas redes sociais 📌 configuração de inscrição aprimorada 📌 nova página "Sobre nós" 📌 página "Membros" mais amigável Vamos dar uma olhada em todas essas melhorias! NOTIFICAÇÕES A partir de agora, você poderá ver que há novas notificações no canto superior direito da página perto da sua foto. Basta clicar no sino e você verá um menu suspenso com todas as suas notificações recentes, a partir do qual você pode acessar a página com detalhes: Ao clicar no link "Ver todas", você será redirecionado para uma página onde poderá ver todas as suas notificações A partir desta página, você pode "Marcar tudo como lido" ou seguir o link para a página que gerou a notificação. E gerencie suas configurações de assinatura. INSCRIÇÕES Alteramos o design da página Inscrições. Espero que seja mais fácil de usar agora Você pode escolher quais notificações receberá da Comunidade de desenvolvedores, seja por e-mail ou pelo site. Você pode encontrá-lo na seção "Inscrições" da sua conta. SOBRE NÓS Já comentamos que criamos uma página nova "Sobre nós". Mas é tão fofa quanto um botão, então vale a pena mencionar mais uma vez 🥰 Você pode encontrá-la no menu superior, na seção Sobre --> Sobre nós: MEMBROS E outra página que ajustamos para sua conveniência é a página "Membros". Adicionamos uma nova coluna "Última atividade". E, claro, não esqueça que você pode classificar por qualquer coluna apenas clicando em seu nome. Por enquanto é isso! Espero que você aprove todas as nossas melhorias. Até a próxima com mais novidades!
Artigo
Larissa Prussak · Out. 28, 2021

Desenvolvimento de aplicativos da web de última geração com back-end Node.js (QEWD-Up) + front-end NuxtJS / Vue.js

Eu escrevi um tutorial passo a passo no repositório qewd-howtos sobre como você pode escrever aplicativos da web Node.js de última geração de várias páginas usando o QEWD-Up WebSocket/REST api back-end integrado com um framework da web como NuxtJS e Vue.js. Em particular com o mais recente framework NuxtJS/Vue.js , escrever aplicativos da web torna-se divertido novamente, permitindo que você escreva seus aplicativos de forma muito eficiente, ocultando todo o código template de você. O tutorial deve ser muito fácil de fazer em sua máquina de desenvolvimento e consiste em duas partes: Instruções para criar uma configuração básica QEWD-Up setup Node.js com WebSocket e REST endpoints usando um banco de dados InterSystems IRIS/Caché. Instruções para criar um app demo front-end NuxtJS 3 (para a última versão beta do Nuxt 3) ou - alternativamente - instruções para um app demo front-end NuxtJS 2 (a versão de produção atual do Nuxt 2.x) Você pode simplesmente clonar as configurações de demonstração do GitHub e executá-las em sua máquina de desenvolvimento usando Visual Studio Code onde sua instância de desenvolvimento IRIS / Caché está rodando. A demonstração é mantida o mais fácil possível, mas contém todas as etapas principais de que você precisa para começar a escrever aplicativos da vida real..Algumas capturas de tela: O front-end NuxtJS 3: O back-end do NuxtJS 3 em execução no Node.js: O back-end QEWD-Up rodando em Node.js + IRIS / Caché: Se você tiver comentários ou encontrar problemas, crie um problema no repositório GitHub relevante! Boa codificação e poste seus comentários abaixo do que você achou! Ward