Limpar filtro
Artigo
Olga Zavrazhnova · Mar. 19, 2021
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
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
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
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
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
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
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
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
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
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
# 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.

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".

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

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.

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:

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.

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:

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