Limpar filtro
Anúncio
Angelo Bruno Braga · Fev. 25, 2022
Clientes HealthShare® tem um novo motivo para comemorar com o recente conteúdo do Boletim de Aprendizagem deste mês.
Veja como:
Configurar as mensagens de saúde para entrega pontual com o Unified Care Record.
Customizar o Clinical Viewer.
Além disto, desenvolvedores poderão conhecer um novo canal do YouTube que orienta como escrever aplicações com a tecnologia InterSystems utilizando o VS Code. Se você está procurando por treinamentos ao vivo, veja quais cursos em sala de aula estão chegando!
Pergunta
Guilherme Silva · Jun. 10
Estamos desenvolvendo uma aplicação em React e essa aplicação terá seus próprios usuários/senhas. Estamos fazendo alguns testes de autenticação, e estamos procurando conhecer melhor JWT do Iris. Entretanto, segundo a documentação, precisamos passar um body com um usuário do Iris para então receber o token JWT. A nossa preocupação é que essa primeira chamada não parece ser segura, já que precisamos enviar esse body aberto para então conseguir um token. Alguma sugestão de como enviar esse body de forma oculta? utilizamos como draft um post da comunidade:
https://community.intersystems.com/post/creating-rest-api-jwt-authentication-objectscript Os documentos retornados não mencionam nenhuma solução específica para enviar o body de autenticação com um usuário no Iris de maneira oculta durante a obtenção do token JWT. Eles destacam que o endpoint `/login` exige o envio do usuário e da senha em formato JSON no corpo da requisição para receber tokens de acesso e atualização. O exemplo de payload mencionado é:
```json
{"user": "SEU_USUARIO", "password": "SUA_SENHA"}
```
Se os valores forem válidos, o servidor retornará os tokens no corpo da resposta [[1]](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ROARS_iam_jwt).
Como o envio é feito em uma conexão HTTP, recomenda-se utilizar HTTPS para criptografar os dados durante a transmissão, garantindo maior segurança no transporte dos dados sensíveis de autenticação. Isso é uma prática padrão para proteger requisições que contêm informações como usuário e senha [[1]](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ROARS_iam_jwt). Caso precise de mais detalhes, os documentos sugerem configurar a autenticação JWT no Iris corretamente para mitigar preocupações de segurança [[2]](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ROARS_iam_oauth)[[3]](https://community.intersystems.com/post/jwt-creation-and-integration-intersystems-iris)[[1]](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ROARS_iam_jwt).Sources:1.JSON Web Token (JWT) Authentication | Security Reference | InterSystems IRIS Data Platform 2025.12.OAuth 2.0 and OpenID Connect | Security Reference | InterSystems IRIS Data Platform 2025.13.JWT Creation and Integration in InterSystems IRIS Olá @Guilherme.Silva
Você deve ter um servidor HTTP, (apache, iis, nginx) com https habilitado e com o webgateway configurado, dessa forma toda a comunicação com IRIS será segura mesmo antes de fornecer o token JWT.Este artigo demonstra uma configuração https com IISHTTP and HTTPS with REST API | InterSystems Developer Community | Contest
Este outro link é um container com apache e letsencript que você pode usar como basehttps://github.com/lscalese/isc-webgateway-letsencrypt
Anúncio
Angelo Bruno Braga · Out. 11, 2021
Olá Desenvolvedores !
A Intersystems marca presença e patrocina o Fórum Healthcare Business, que acontece em Natal - RN. A 9ª edição do fórum traz o tema Liderança em saúde: resiliência no mundo após a pandemia.
O evento será presencial e contará com a presença do nosso diretor, Dr. Raimundo Nonato B. Cardoso, que irá participar do debate sobre:Tecnologias alavancadas pela pandemiaQuais serão as soluções tecnológicas mais requisitadas e quais serão substituídas na era pós-covid?
Saiba mais !
Anúncio
Angelo Bruno Braga · Dez. 6, 2021
Olá Comunidade,
Estamos felizes em convidá-los para o Encontro Online com os Ganhadores do Concurso de Segurança InterSystems!
Data & Horário: Sexta-feira, 10 de Dezembro de 2021 – 12:00 horário de Brasília
O que lhe espera neste encontro online?
A biografia de nossos ganhadores.
Pequenas demonstrações de suas aplicações.
Uma discussão aberta sobre as tecnologias utilizadas, Perguntas e Respostas e planos para os próximos concursos.
Nossos Convidados:
@Henry.HamonPereira, Analista de Sistemas na BPlus Tecnologia
@José.Pereira, Desenvolvedor de Business Intelligence na Shift Consultoria e Sistemas Ltda
@Henrique.GonçalvesDias, Especialista em Gerenciamento de Sistemas/Administrador de Bancos de Dados no Tribunal Federal de São Paulo
@Dmitry.Maslennikov, Cofundador , CTO e Developer Advocate na CaretDev Corp
@Yuri.Gomes, Arquiteto de Software na YM Services
@Robert.Kuszewski, Gerente de Produto
@Sean.Klingensmith, Desenvolvedor de Sistemas Sênior
@Eduard.Lebedyuk, Engenheiro de Vendas
@Evgeny.Shvarov, Gestor do Ecossistema para Desenvolvedores InterSystems
Ficaremos muito felizes em conversar com vocês em nosso encontro virtual!
➡️ REGISTRE-SE HOJE!
Anúncio
Angelo Bruno Braga · Mar. 31, 2022
Olá Comunidade,
Estamos muito entusiasmados em dar as boas-vindas para a @Irène.Mykhailova como nossa nova Moderadora em Francês na equipe da Comunidade de Desenvolvedores! 🎉
Vamos dar uma olhada de perto na biografia da Irène.
@Irène.Mykhailova professora adjunta no Instituto Politécnico Igor Sikorsky Kyiv (KPI) e Gestora de Conteúdo da Comunidade de Desenvolvedores InterSystems em Francês. o KPI é a principal universidade técnica da Ucrânia.
Um pouco sobre a Irène:
Ela começou sua carreira em 2009 como desenvolvedora de software e trabalhou em vários projetos relacionados a manufatura, serviços postais e serviços bancários.
Em paralelo ela escreveu sua tese de Doutorado e trabalhou na universidade, trazendo sua experiência prática para beneficiar suas aulas.
Ela trabalha com tecnologias InterSystems desde que ela começou a lecionar em 2011.
Alguns outros fatos sobre a Irène:
Ela nasceu na Ucrânia em 1987, morou em Kiev e se mudou recentemente para Breslávia, na Polônia.
Seus hobbies são programar, artes marciais, viajar e tocar bateria.
BOAS-VINDAS CALOROSAS!
Obrigado e congratulações @Irène.Mykhailova 👏🏼
Esperamos que você seja uma excelente Moderadora!
Anúncio
Angelo Bruno Braga · Out. 4, 2022
Visão Geral do HealthShare Unified Care Record 12 e 13 de Outubro de 2022 9:00am-5:00 US-Eastern Time (EST)
Este é um treinamento virtual, ao vivo, conduzido por um instrutor.
O curso Visão Geral do HealthShare Unified Care Record é uma excelente forma para Clientes HealthShare, Parceiros e funcionários InterSystems se familiarizarem com o Unified Care Record, mas especialmente aqueles que precisam conhecer sua capacidade e funcionalidades mas sem precisar entender como configurar o HealthShare Unified Care Record.
Este é um curso virtual, conduzido por um instrutor, de conteúdo não técnico, com intuito de prover uma introdução abrangente ao HealthShare Unified Care Record.
Este curso é para qualquer um que precise compreender as funcionalidades e arquitetura do HealthShare Unified Care Record. (Se você precisa de informações de como configurar e solucionar problemas no Unified Care Record, considere participar do curso HealthShare Unified Care Record Fundamentals .)
Nenhum conhecimento prévio é necessário. Qualquer Cliente HealthShare, Parceiro ou funcionário InterSystems Employee pode se inscrever no curso.
Inscreva-se aqui
Artigo
· Mar. 26, 2021
Acabamos de terminar o segundo dia de sessões de foco - com MUITO conteúdo excelente! Com trilhas paralelas, é difícil acompanhar - mas uma vantagem de uma conferência virtual é que você pode assistir a tudo o que perdeu sob demanda!
No blog de ontem (Destaques do dia 1), cobri a maioria dos anúncios especiais, como InterSystems IRIS Adaptive Analytics e o FHIR Accelerator Service, então é hora de nos voltarmos para alguns temas estratégicos mais amplos hoje.
Gerenciamento de operações e sistema: estamos vendo cada vez mais clientes executando na nuvem, bem como pessoas que estão empregando estratégias modernas de implantação no local. Mark Bolinsky apresentou estratégias de armazenamento em nuvem CL003 e estratégias de backup em nuvem CL004 consecutivas hoje, fornecendo muitos detalhes e insights para quem usa a nuvem para cargas de trabalho de produção. Também recebemos uma resposta entusiástica em torno de nosso novo módulo de Alerta e Monitoramento do Sistema (SAM). Verifique DEV007 System Alerting & Monitoring e CL005 Distributed Deployments. O monitoramento facilitado para seus clusters atraiu uma boa multidão - obrigado a todos que participaram e contribuíram com perguntas!
Segurança: a InterSystems obtém consistentemente notas altas de clientes e analistas em relação à segurança, mas a maioria das pessoas pensa nisso em termos de manter nosso produto seguro. Estamos fazendo isso, é claro, mas também estamos adicionando novos recursos de segurança. O grampeamento SEC000 OCSP de hoje é um excelente exemplo. OCSP (Protocolo de status de certificado online) fornece segurança mais forte, mas também afeta o desempenho do navegador. Com o grampeamento OCSP, o servidor verifica a validade do certificado X.509 e grampeia esse status na resposta ao navegador, resultando em um tempo de resposta muito mais rápido E forte segurança.
Machine Leardning: no ano passado, anunciamos o IntegratedML, um all-SQL, um recurso integrado para aprendizado de máquina em seus aplicativos. Agora que a tecnologia está geralmente disponível, Tom Dyar obviamente teve um dia agitado apresentando uma sessão de introdução e conversas mais aprofundadas sobre como trabalhar com H2O e DataRobot, um parceiro em uma série de iniciativas de ML, também além do IntegratedML. E isso em cima do caso de uso de ontem de nosso pioneiro Baystate. Mais sobre as práticas recomendadas para ML na plataforma amanhã!
Data Warehousing & Business Intelligence: Nossa nova oferta Adaptive Analytics não é o único grande investimento que estamos fazendo para torná-lo mais bem-sucedido com o IRIS da InterSystems para casos de uso analítico. Benjamin De Boe apresentou uma visão geral de nosso suporte para Data Warehousing e também pegou seu quadro branco de cozinha para mostrar a você algumas das partes internas de nosso mecanismo SQL. Movendo-se para o espaço do usuário final, Mark Massias apresentou uma visão geral da liberdade de escolha que deixamos para os usuários para ferramentas de BI e relatórios para visualizar os dados em seu data warehouse. E, finalmente, Carmen Logue hospedou Mike Senatore de nosso parceiro BioReference Labs, que adotou nosso novo recurso Selective Cube Build para maximizar a disponibilidade de seu ambiente InterSystems IRIS BI. Mais sobre como trabalhar com nosso novo parceiro de tecnologia Alteryx nesse tipo de ambiente amanhã!
Conversa do desenvolvedor: Tivemos algumas sessões hoje cobrindo nosso excelente conjunto de ferramentas para inserir dados e aplicativos na plataforma de dados IRIS. Harry abordou técnicas modernas de uso do Change Data Capture para migrar dados entre bancos de dados. Se você construir aplicativos cliente, você desejará verificar o tour guiado por Bob Kuszewki sobre as APIs Java de cliente de objeto, relacional e nativo. Falando em desenvolvimento de aplicativos, a sessão de Tim Leavitt no gerenciador de pacotes ZPM é imperdível para qualquer pessoa que constrói e implanta aplicativos IRIS.
Interoperabilidade e FHIR:
Matt Spielman forneceu uma bela história do envolvimento da InterSystems com FHIR desde 2014 na sessão The Promise of FHIR. Ele delineou o roteiro FHIR para os próximos dois anos, incluindo análises em massa de FHIR e FHIR. Vimos uma mudança real conforme o FHIR toma conta - nossos requisitos de FHIR estão sendo conduzidos cada vez mais pelos clientes e menos pelos engenheiros da InterSystems.
A InterSystems continua investindo muito no aprimoramento de nosso suporte para X12 e IP004: Apresentando novos aprimoramentos X12 ofereceu uma visão geral rápida dos novos recursos, com demonstrações de recursos notáveis, incluindo validação SNIP Nível 1 e 2 e suporte DTL consolidado especificamente para X12.
Stefan Wittmann forneceu uma prévia das últimas adições ao kit de ferramentas de produtividade HL7 em IP003: Tornando-se mais eficaz com feeds HL7. O InterSystems IRIS agora é capaz de gerar stubs DTL com base em mensagens HL7v2 de entrada e saída e permite que os desenvolvedores de interface melhorem iterativamente o DTL e testem novamente. Esperamos que esse recurso forneça outro grande impulso à produtividade. Outro recurso permite validar produções em namespaces ou instâncias para comportamento alterado, reduzindo significativamente o custo de atualizações.
O InterSystems API Manager (IAM) foi lançado há um ano e, desde então, vimos muitos parceiros adotando esse novo recurso da plataforma de banco de dados IRIS da InterSystems. Não é surpresa que o IAM tenha sido abordado com mais profundidade hoje. "IP002: Atualizando você sobre o InterSystems API Manager" forneceu um rápido tour pelos principais recursos do IAM para aqueles que ainda não tiveram a chance de explorar o IAM e discutiu os novos recursos que o próximo lançamento IAM 1.5.0.3 irá incluir. Stefan também discutiu IP001: Melhores práticas para IAM, explorando maneiras de alcançar alta disponibilidade e fornecer o melhor controle granular sobre o tráfego de API.
Olhando para o Futuro: Amanhã encerraremos as Focus Sessions e esperamos terminar bem. Existem ainda várias maneiras de se manter envolvido. Continue a usar VS2020questions@InterSystems.com para enviar suas perguntas e comentários. Fique ligado nas sessões de perguntas e respostas ao vivo no final do dia. Aproveite o excelente aprendizado sob demanda e o horário de expediente associado que acontecerá na próxima semana.
Perguntar aos especialistas é uma ótima maneira de se aprofundar em qualquer assunto que desejar. Reserve uma reunião com um especialista ou treinador para 30 de outubro ou 2 de novembro!
Qual foi a sua coisa favorita do Virtual Summit hoje? Deixe-nos saber nos comentários abaixo.
Aproveite o terceiro dia amanhã!
Jeff
Anúncio
Angelo Bruno Braga · Dez. 4, 2020
Com a chegada da pandemia as prioridades de inovação das empresas foram repensadas.
Inteligência Artificial (IA) teve um aumento de 10% em relação a dezembro de 2019. Soluções como Chatbot/Plataformas de IA de conversação representam 65,5% das aplicações que as empresas já implementaram como algum elemento de IA que recebe uma relevância na orientação nos temas de User Experience (UX).
Assista este webinar em qualquer momento e conheça as recomendações dos especialistas para este cenário de aceleração no mundo digital.Evento realizado pela IDC e patrocinado pela InterSystems Brasil.
Registre-se aqui !
Anúncio
Jeff Fried · Out. 27, 2021
Notamos que a licença integrada contida no InterSystems IRIS e IRIS for Health 2021.1 Community Edition está incorretamente configurada para expirar em 30 de outubro de 2021.
Fique atento nas postagens da Comunidade pois iremos fornecer um novo instalador para resolver o problema em breve. Atualizaremos esta postagem assim que houver uma solução disponível.
Não há impacto em nenhuma versão de produção (a Community Edition é para fins de desenvolvimento), mas eu queria alertar os desenvolvedores o mais rápido possível.
Peço desculpas por qualquer inconveniente que isso possa causar.
Anúncio
Angelo Bruno Braga · Out. 20, 2021
Olá Desenvolvedores !
É um prazer anunciar mais um evento com participação da InterSystems. Desta vez o evento será no World Trade Center Business Club.
O evento contará com a presença de nosso diretor, Dr. Raimundo Nonato Benevides Cardoso, que abordará o tema: Interoperabilidade estratégica e Telemedicina: o paciente no centro do cuidado!
Como potencializar os investimentos já realizados em tecnologia? Como integrar dados demográficos e clínicos gerados em sistemas heterogêneos? Como receber, tratar e armazenar dados em diversos padrões? Essas e outras perguntas serão respondidas.
Inscreva-se!
Pergunta
Paulo Brandão · Maio 31, 2023
Bom dia pessoal.
Estou fazendo uma rotina onde no final preciso deletar um arquivo de um diretório de rede, porém para realizar essa ação, preciso utilizar um usuário específico, diferente do usuário que está executando o Iris no servidor.
É possível usar um usuário diferente, passando o usuário e senha para deletar um arquivo na rede via Iris? Fala Paulão, dá uma olhada neste artigo https://community.intersystems.com/post/remote-code-execution-intersystems-cache-0. Acho que é o que você precisa.
Pergunta
Flávio Lúcio Naves Júnior · Mar. 3, 2021
Para fazer a tradução de um artigo para o Português precisa pedir permissão para o autor? Ou todo artigo que foi criado pode ser traduzido?
Obrigado. Olá Flávio, não tenho a resposta para sua pergunta, mas, já fiz a solicitação para algumas pessoas e não recebi retorno algum. Estou curioso também para saber como proceder. Acredito que ajudaria muito se a tradução fosse mais "livre". Eu mandei mensagem para a Intersystems não me responderam, vou fazer a pergunta em inglês, pois tem maior visibilidade e informo aqui tbm. A Intersystems permite fazer a tradução de qualquer artigo, não existe a necessidade de pedir permissão para o autor, no nesse link existe um tutorial de como fazer isso. bom dia Flávio, não é necessária a autorização do autor. Temos um processo interno onde solicitamos a tradução.
Me indique o artigo que eu peço a tradução.
obrigado Bom dia Rochael,
A nossa dúvida era se poderíamos nós da comunidade traduzir, e caso fosse feita se precisava pedir autorização, a Anastasia Dyubaylo explicou que podemos sim fazer tradução sem pedir autorização.Abraços perfeito!!!! mas se quiser que a gente faça me avise!!!!
Anúncio
Rochael Ribeiro · Jun. 17, 2021
Estamos procurando desenvolvedores Python para participar de nosso Programa de Acesso Antecipado em Python Integrado! Se você (ou alguém que você conhece) é um desenvolvedor Python e está interessado, entre em contato conosco através do endereço de e-mail abaixo.
A InterSystems está trazendo o poder e a simplicidade do Python para o IRIS. Estamos trabalhando duro para integrar Python diretamente ao kernel IRIS, tornando-o um par completo para ObjectScript.
Use qualquer uma das milhares de bibliotecas Python pré-construída
Fácil acesso a IRIS de Python e Python de ObjectScript
Classes de ObjectScript e Python mist
O Programa de acesso antecipado é uma maneira de você ajudar a moldar o futuro do IRIS, fornecendo comentários sobre os próximos recursos. Todos os participantes receberão kits dedicados de software de pré-lançamento junto com instruções, documentação e exemplos para que você possa começar a construir soluções incríveis enquanto se diverte. Além disso, você receberá um moletom incrível da InterSystems e talvez mais. Tudo o que pedimos em troca é seu feedback sobre o que é bom e onde devemos melhorar.
RSVP: python-interest@intersystems.com
A fase de “Desenvolvedor Python” do Programa de Acesso Antecipado ocorrerá de 28 de junho a 26 de julho de 2021
Artigo
Andre Larsen Barbosa · Maio 20
Assim como um nocaute, sem dar chances ao adversário, o Kubernetes, enquanto uma plataforma de código aberto, tem um universo de oportunidades devido à sua disponibilidade (isto é, a facilidade para encontrar suporte, serviços e ferramentas). Ele é uma plataforma que pode gerenciar os trabalhos e serviços em contêineres, o que simplifica e muito a configuração e automação destes processos.
Mas, vamos justificar a imagem título e dar o nome “correto” à ferramenta em questão: InterSystems Kubernetes Operator.
O princípio é básico, escolhem-se os serviços e definem-se as regras para o jogo (aqui remetendo ao Knockout novamente), e tudo será fornecido da forma mais transparente e eficiente possível, e isto é válido para a instalação, reparação ou eventual restauração, quando isto fugir dos requisitos pré-definidos.
Mas, o que diferencia o IKO de qualquer outro operador? Como uma extensão da API do Kubernetes (Vamos passar a chama-lo de K8s para abreviar), o componente personalizado IrisCluster, que tem como opções a implantação como cluster bloqueado IRIS, um cluster Caché distribuído ou ainda uma instância anônima. Tudo isto nas mais diversas plataformas disponíveis Kubernetes. Por último, mas, não menos importante, também engloba recursos de gerenciamento de cluster InterSystems, que permitem automatizar algumas tarefas com a adição de nós, outrora, só poderia ser realizado manualmente.
Tudo isto é muito bonito, fez referência a algum esporte ou jogo, mas, por que eu preciso disto? A resposta é relativamente simples. Eu não preciso do IrisCluster para levar o InterSystems IRIS para o K8s, entretanto, como o K8s é um aplicação independente, seria necessário crias as definições e eventuais scripts para configurar estas instâncias IRIS. Desta forma, o IKO automatiza este processo, facilitando a manutenção. A utilização de contêineres é uma ótima forma de para empacotar esta coleção de atividades que devem acontecer.
Entretanto, aproveitando a oportunidade, você sabe o que é um contêiner? Uma dica, não é somente o jogo de tabuleiro.
A resposta está muito mais para o “transporte” de alguma encomenda, pois, ele empacota e isola aplicações e serviços, para que sejam executadas à parte do restante. Facilitando assim o “transporte” de um ambiente para outro, de acordo com a necessidade.
Aproveitando-se da vasta documentação da InterSystems, abaixo segue o link para a instalação do IKO e subsequentes etapas de configuração e ajustes.
https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=AIKO#AIKO_install
Para ninguém ficar curioso a respeito do apelido K8s. A origem do nome Kubernetes vem do grego, que significa nada mais, nada menos que pilotou ou timoeiro, enfim, àquele que direciona. E, a quantidade de caracteres entre as letras “K” do início e “S” do fim, é 8. Desta forma, “K8s”.
Artigo
Angelo Bruno Braga · Mar. 2, 2021
A especificação do [FHIR Terminology Service](https://www.hl7.org/fhir/R4/terminology-service.html) descreve um conjunto de operações nos recursos [CodeSystem](https://www.hl7.org/fhir/R4/codesystem.html), [ValueSet](https://www.hl7.org/fhir/R4/valueset.html) e [ConceptMap](https://www.hl7.org/fhir/R4/conceptmap.html). Entre essas operações, as quatro operações a seguir parecem ser as mais amplamente adotadas:
| CodeSystem | ValueSet |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [$lookup](https://www.hl7.org/fhir/R4/codesystem-operation-lookup.html)[$validate-code](https://www.hl7.org/fhir/R4/codesystem-operation-validate-code.html) | [$expand](https://www.hl7.org/fhir/R4/valueset-operation-expand.html)[$validate-code](https://www.hl7.org/fhir/R4/valueset-operation-validate-code.html) |
O desenvolvimento de uma implementação parcial da especificação tem sido uma forma eficaz de explorar o [novo framework FHIR](https://docs.intersystems.com/irisforhealth20203/csp/docbook/Doc.View.cls?KEY=HXFHIR_server_intro#HXFHIR_server_arch) introduzido no IRIS for Health 2020.1. A [implementação](https://github.com/intersystems-ru/fhir-terminology-service) inclui quatro operações listadas acima e oferece suporte a interações de [leitura](https://www.hl7.org/fhir/R4/http.html#read) e [pesquisa](https://www.hl7.org/fhir/R4/http.html#search) para os recursos [CodeSystem](https://www.hl7.org/fhir/R4/codesystem.html) e [ValueSet](https://www.hl7.org/fhir/R4/valueset.html).
É importante observar que a implementação usa classes persistentes do Plain ObjectScript como fonte para tabelas de terminologia.
### Instalação e teste com uma estratégia de exemplo
A lista a seguir descreve as etapas básicas de instalação e teste:
1. Instale o IRIS for Health 2020.1 ou mais recente.
2. Configure um novo namespace usando o menu `System Administration` > `Configuration` > `System Configuration` > `Namespaces` no Portal ou executando o comando `do ##class(HS.HC.Util.Installer).InstallFoundation("")` no namespace HSLIB. Em seguida, importe as classes das pastas [src/cls](https://github.com/intersystems-ru/fhir-terminology-service/tree/main/src/cls/) e [samples/cls](https://github.com/intersystems-ru/fhir-terminology-service/tree/main/samples/cls/) do repositório [intersystems-ru/fhir-terminology-service](https://github.com/intersystems-ru/fhir-terminology-service) no GitHub.
3. Crie um conjunto customizado de metadados FHIR com base no conjunto R4 com parâmetros de pesquisa adicionais definidos em [dummy-search-parameters.json](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/src/fhir-search-parameters/dummy-search-parameters.json). Isso pode ser feito usando o utilitário interativo `##class(HS.FHIRServer.ConsoleSetup).Setup()` ou executando o comando:
```
do ##class(HS.FHIRServer.Installer).InstallMetadataSet("", "", "HL7v40", $lb(""), 1)
```
* Esta etapa é necessária para que as operações `$expand` e `$validate-code` suportem solicitações HTTP GET.
* Observe que os arquivos do conjunto de metadados FHIR empacotados com InterSystems IRIS estão no diretório `/dev/fhir/fhir-metadata`.
4. Crie um novo endpoint FHIR com base no novo conjunto de metadados e na classe [Sample.iscru.fhir.fts.SimpleStrategy](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/samples/cls/Sample/iscru/fhir/fts/SimpleStrategy.cls). Novamente, isso pode ser feito usando o utilitário interativo ou executando o comando:
```
do ##class(HS.FHIRServer.Installer).InstallInstance("", "Sample.iscru.fhir.fts.SimpleStrategy", "")
```
5. Permita o acesso não autenticado ao novo endpoint: use o utilitário interativo ou execute os seguintes [comandos](https://docs.intersystems.com/irisforhealth20203/csp/docbook/Doc.View.cls?KEY=HXFHIR_server_install#HXFHIR_server_install_program_configure):
```
set strategy = ##class(HS.FHIRServer.API.InteractionsStrategy).GetStrategyForEndpoint("")
set config = strategy.GetServiceConfigData()
set config.DebugMode = 4
do strategy.SaveServiceConfigData(config)
```
6. Popule o [Sample.iscru.fhir.fts.model.CodeTable](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/samples/cls/Sample/iscru/fhir/fts/model/CodeTable.cls):
```
do ##class(Sample.iscru.fhir.fts.model.CodeTable).Populate(10)
```
7. Importe o arquivo [fhir-terminology-service.postman_collection.json](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/tests/postman/fhir-terminology-service.postman_collection.json) para o Postman, ajuste a `url` variável definida na coleção e teste o serviço em `Sample.iscru.fhir.fts.model.CodeTable`, que é uma classe persistente simples.
### Interações FHIR suportadas
Atualmente, o único parâmetro de pesquisa com suporte para CodeSystem e ValueSet é `url`.
Os métodos HTTP GET e HTTP POST são suportados para as quatro operações listadas acima.
A tabela a seguir lista algumas das possíveis solicitações HTTP GET na classe [Sample.iscru.fhir.fts.model.CodeTable](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/samples/cls/Sample/iscru/fhir/fts/model/CodeTable.cls).
| URI(a ser acrescentado com `http://:`) | Descrição |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| /metadata | Obtém o recurso de declaração de capacidade do endpoint. |
| /CodeSystem/Sample.iscru.fhir.fts.model.CodeTable | Lê o recurso CodeSystem correspondente à classe Sample.iscru.fhir.fts.model.CodeTable. |
| /ValueSet/Sample.iscru.fhir.fts.model.CodeTable | Lê o recurso ValueSet correspondente à classe Sample.iscru.fhir.fts.model.CodeTable. |
| /CodeSystem?url=urn:CodeSystem:CodeTable | Pesquisa o recurso CodeSystem por url. |
| /CodeSystem | Envia todos os recursos do CodeSystem disponíveis. |
| /ValueSet?url=urn:ValueSet:CodeTable | Pesquisa o recurso ValueSet por url. |
| /ValueSet | Envia todos os recursos do ValueSet disponíveis. |
| /CodeSystem/$lookup?system=urn:CodeSystem:CodeTable&code=TEST | Dado o sistema e o código, obtêm todos os detalhes sobre o conceito. |
| /ValueSet/$expand?url=urn:ValueSet:CodeTable | Expande o ValueSet. |
| /CodeSystem/Sample.iscru.fhir.fts.model.CodeTable/$validate-code?code=TEST | Valida se um código está no sistema de código. |
### Criando uma estratégia personalizada
A fim de expor suas próprias classes persistentes como sistemas de código/conjuntos de valores FHIR, você precisará criar sua classe de estratégia personalizada ao subclassificar o [iscru.fhir.fts.FTSStrategy](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/src/cls/iscru/fhir/fts/FTSStrategy.cls) e, em seguida, criar um endpoint FHIR com base na nova estratégia personalizada (veja a instalação no passo 4 acima).
Um parâmetro de classe e pelo menos três métodos devem ser substituídos por sua classe de estratégia:
* O parâmetro de classe `StrategyKey` deve receber algum valor único. O nome da classe atual parece ser uma boa opção.
* O método de classe `getCodeTablePackage()` deve retornar o nome do pacote para um determinado sistema de código (ou conjunto de valores) identificado por sua [URL canônica](https://www.hl7.org/fhir/R4/resource.html#canonical). Normalmente, todas as classes de terminologia pertencem a um pacote, portanto, esse método normalmente retornaria um e o mesmo nome de pacote, independentemente dos valores dos argumentos.
* Os métodos de classe `getCodePropertyName()` e `getDisplayPropertyName()` devem retornar nomes de propriedades de classe que correspondem aos elementos de conceito `code` e `display`. Classes diferentes podem ter propriedades diferentes mapeadas para elementos de terminologia code/display.
Outros métodos e parâmetros de [iscru.fhir.fts.FTSStrategy](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/src/cls/iscru/fhir/fts/FTSStrategy.cls) que você pode achar apropriado substituir são os seguintes:
* O método da classe` listCodeTableClasses()` precisa ser sobrescrito para dar suporte às solicitações de pesquisa que resultam no retorno de todos os sistemas de código disponíveis (ou conjuntos de valores). Este método deve retornar uma lista de nomes de classes de todas as classes de terminologia disponíveis. [Sample.iscru.fhir.fts.SimpleStrategy](https://github.com/intersystems-ru/fhir-terminology-service/blob/main/samples/cls/Sample/iscru/fhir/fts/SimpleStrategy.cls) contém a seguinte implementação básica deste método:
```
/// Retorna uma lista de todas as classes de tabela de código disponíveis.
ClassMethod listCodeTableClasses() As %List
{
#dim sql As %String = "SELECT name FROM %Dictionary.ClassDefinition WHERE name LIKE '" _ ..#codeTablePACKAGE _ ".%' ORDER BY name"
#dim resultSet As %SQL.StatementResult = ##class(%SQL.Statement).%ExecDirect(, sql)
if (resultSet.%SQLCODE '= 0) && (resultSet.%SQLCODE '= 100) $$$ThrowStatus($$$ERROR($$$SQLError, resultSet.%SQLCODE, resultSet.%Message))
#dim return As %List = ""
while resultSet.%Next()
{
set return = return _ $lb(resultSet.name)
}
quit return
}
```
* O método da classe `isExcludedProperty()` deve ser substituído se alguma propriedade particular de suas classes persistentes não aparecer nos recursos CodeSystem. Por padrão, este método filtra as propriedades de `Collection`, `Identity`, `Internal`, `MultiDimensional` e `Private`. Observe que a referência de objeto e as propriedades de fluxo atualmente não são suportadas e são ignoradas pelo framework.
* Os parâmetros de classe `codeSystemUrlPREFIX` e `valueSetUrlPREFIX`, e os métodos `getCodeSystemForClassname()`, `getValueSetForClassname()`, `determineCodeTableClassname()` e `determineCodeSystemForValueSet()` controlam como os nomes de classe são mapeados para [URLs canônicas](https://www.hl7.org/fhir/R4/resource.html#canonical) e vice-versa. Por padrão, o seguinte esquema de nomenclatura é usado para URLs canônicas:
| CodeSystem | ValueSet |
| ----------------------------------------- | --------------------------------------- |
| `urn:CodeSystem:` | `urn:ValueSet:` |
Observe que o [logical id](https://www.hl7.org/fhir/R4/resource.html#id) (também conhecido como server id) de um recurso CodeSystem/ValueSet é igual ao nome completo de sua classe correspondente.
### A FAZER
Atualmente falta suporte para controle de versão de sistemas de código, hierarquias de conceito e operação de `$subsumes`, recurso de ConceptMap e muitas outras coisas. Ideias e pull requests são bem-vindos!