#InterSystems IRIS for Health

0 Seguidores · 377 Postagens

InterSystems IRIS for Health™ é a primeira e única plataforma de dados do mundo projetada especificamente para o rápido desenvolvimento de aplicações de saúde, para gerenciar os dados mais críticos do mundo. Inclui poderosos recursos prontos para uso: processamento e análise de transações, um modelo de dados de saúde extensível, desenvolvimento de solução baseada em FHIR, suporte para padrões de interoperabilidade em saúde e muito mais. Tudo isso permitindo que os desenvolvedores percebam valor e criem aplicações inovadoras, rapidamente. Saber mais.

Artigo Heloisa Paiva · jan 23 2m read

A auditoria é uma capacidade crítica que garante a segurança do seu servidor e, há algum tempo, incluímos a capacidade de auditar instruções SQL executadas no servidor.

Com a v2024.3 já disponível, estamos fornecendo opções com granularidade mais refinada para definir esses eventos a serem auditados.

Anteriormente, você podia decidir auditar instruções SQL de acordo com o mecanismo de acesso, por exemplo, executando instruções via JDBC/ODBC vs. SQL embarcado (ex: usando &sql em seu código) vs. SQL Dinâmico (ex: usando %SQL.

0
0 33
Artigo Heloisa Paiva · jan 22 1m read

O InterSystems IRIS for Health v2024.3 já está disponível como Developer Preview há algum tempo, e eu gostaria de destacar o novo suporte relacionado à Busca FHIR (FHIR Search) que foi introduzido.

Foram adicionados suportes a dois Modificadores -

Estes permitirão consultas de busca mais flexíveis, sofisticadas e ricas.

E um Parâmetro de Resultado de Busca -

Isso permitirá resultados mais compactos (e potencialmente mais eficientes).

Veja também as Notas de Lançamento (Release Notes) relacionadas.

0
0 29
Artigo Heloisa Paiva · jan 21 3m read

Olá, agora gostaria de continuar com o tópico que discutimos anteriormente

Usando o Postman para testar o OAuth2.0 do repositório InterSystems FHIR - Parte 1


Pergunta 1: De onde vêm meu client_id e meu client_secret?

Resposta curta: Do Servidor de Autenticação.

Se você não possui um Servidor de Autenticação, pode configurar um da seguinte forma:

Forneça o hostname (o host deve suportar Https), pelo menos 1 tipo de concessão (escolhemos client credential aqui) e a configuração SSL/TLS

Insira os escopos (aqui inserimos user/.read e user/.

0
0 31
Artigo Heloisa Paiva · jan 20 4m read

Olá a todos, sou eu novamente para compartilhar o que ando estudando recentemente.😓

Recentemente, estou estudando como configurar a autenticação OAuth2 para o repositório InterSystems FHIR. E descobri que os seguintes artigos são muito bons e fáceis de seguir.😁

SMART on FHIR EHR Launch com IRIS for Health

Construindo um Repositório FHIR + Configuração de Servidor de Autorização OAuth2/Servidor de Recursos no IRIS for Health Parte 2

Para mim, como um usuário que não possui muito conhecimento sobre OAuth2.0, acho bastante difícil entender como configurar todo o ambiente OAuth2.

0
0 29
Artigo Heloisa Paiva · jan 19 4m read

O InterSystems IRIS é construído sobre uma arquitetura que separa a organização lógica dos dados (namespaces) de seu local de armazenamento físico (bancos de dados). Compreender essa separação e a distinção entre Namespaces e Bancos de Dados é crucial para uma gestão de dados eficaz, segurança e, especialmente, para o compartilhamento de dados de alta performance.

Neste artigo, discutirei esses componentes fundamentais e fornecerei um guia prático sobre como aproveitar os mapeamentos de globals para compartilhar estruturas de dados nativas (globals) entre diferentes ambientes lógicos.

0
0 24
Artigo Evandro Wendt · jan 16 5m read

Entrei na InterSystems há menos de um ano. Mergulhar em ObjectScript e no IRIS foi empolgante, mas também cheio de pequenas surpresas que me pegaram de surpresa no começo. Neste artigo, reúno os erros mais comuns que eu, e muitos colegas novos, cometemos, explico por que eles acontecem e mostro exemplos concretos e correções práticas. Meu objetivo é ajudar outros desenvolvedores iniciantes a economizarem tempo e evitarem os mesmos tropeços no caminho.

1.

0
0 32
Artigo Evandro Wendt · jan 16 2m read

Meu problema era separar mensagens HL7 por tipo de mensagem. Eu precisava criar várias Operações de Arquivo. Com código personalizado, consegui usar 1 adaptador de arquivo para 1 interface e vários tipos de mensagem. Cheguei a experimentar extrair o MSH-4 do conteúdo bruto para acessar informações dinâmicas adicionais, mas isso pode trazer a necessidade de verificações de erro mais robustas e/ou ações padrão de consulta.

Seguindo a convenção de nomenclatura recomendada de "To_FILE_<IntegrationName>"

Eu decidi usar um nome e um caminho de arquivo genéricos nas configurações padrão.

0
0 21
Artigo Evandro Wendt · jan 16 3m read

Em um projeto em que estou trabalhando, precisamos armazenar alguns XMLs arbitrários no banco de dados. Esse XML não tem nenhuma classe correspondente no IRIS; precisamos apenas armazená-lo como uma string (ele é relativamente pequeno e cabe em uma string).
Como existem MUITOS (milhões!) de registros no banco de dados, decidi reduzir o tamanho o máximo possível sem usar compressão. Sei que parte do XML a ser armazenado está indentada, parte não, isso varia.

Para reduzir o tamanho, decidi minificar o XML, mas como minificar um documento XML no IRIS?

0
0 16
Artigo Evandro Wendt · jan 12 3m read

No cenário atual de dados de saúde, o FHIR se tornou o padrão para a troca de dados clínicos estruturados. No entanto, embora o FHIR se destaque em interoperabilidade, seu formato JSON torna a análise desafiadora — incluindo os FHIR QuestionnaireResponse.

Este projeto demonstra como transformar dados de FHIR QuestionnaireResponse de JSON aninhado em tabelas SQL relacionais e embeddings vetoriais. Ao integrar o InterSystems IRIS FHIR SQL Builder e Vector Search, desbloqueamos o significado semântico por trás das respostas dos pacientes.



Três Etapas para Construí-lo

1.

0
0 29
Artigo Evandro Wendt · jan 12 4m read

Quando criamos um repositório FHIR no IRIS, temos um endpoint para acessar informações, criar novos recursos, etc. Mas existem alguns recursos no FHIR que provavelmente não teremos em nosso repositório, por exemplo, o recurso Binary (esse recurso retorna um documento, como um PDF, por exemplo).

Criei um exemplo em que, quando um recurso Binary é solicitado, o endpoint FHIR retorna uma resposta como se ele existisse no repositório.

Antes de tudo, precisamos de um Namespace e de um endpoint FHIR.

0
0 21
Artigo Evandro Wendt · jan 11 2m read

Um aplicativo que converte mensagens HL7 em objetos JSON. Há cerca de um ano, comecei um repositório no GitHub para coletar materiais relacionados a HL7. Recentemente, minha equipe adicionou uma interface HL7 à nossa Produção de Interoperabilidade e fomos solicitados a persistir as mensagens HL7. Criamos um tópico Kafka para receber as mensagens HL7. Usamos Kafka Bridges para enviar mensagens para os tópicos Kafka. As mensagens Kafka são enviadas para o Kafka Bridge em formato JSON.

Pensei em como transformar mensagens HL7 em JSON.

0
0 27
Artigo Evandro Wendt · jan 11 3m read

Olá, pessoal. Quanto tempo! Mais uma vez, gostaria de compartilhar o que tenho estudado recentemente, criar tabelas estrangeiras usando SQL via JDBC.

Como estou aprendendo sobre o IRIS BI ao mesmo tempo, comecei utilizando este ambiente Docker de exemplo do Sample-BI.

https://github.com/intersystems/Samples-BI

Após iniciar o ambiente, faça login no portal de gerenciamento http://localhost:52773/csp/sys/UtilHome.csp  como Superuser.

Troque para o namespace IRISAPP.

😀 Vamos descobrir que todos os dados de exemplo estão armazenados no namespace IRISAPP

0
0 28
Artigo Evandro Wendt · jan 10 1m read

Uma tentativa anterior contou com o auxílio de um método externo em Python.
Este aqui é totalmente CSP clássico, escrito com ISOS, JavaScript e HTML.

Além do gráfico, você também obtém números concretos, coletados recentemente da sua instância local ou de instâncias remotas que também tenham o pacote instalado.



Resultado final

Etapas do processamento

  • Uma página CSP é chamada por sua URL
  • No método OnPreHTTP
    • A System Query preenche a tabela temporária a partir de %SYS
    • Se o parâmetro correto da URL for fornecido
0
0 24
Artigo Evandro Wendt · jan 10 2m read

Eu gostaria de compartilhar com você um pequeno truque para personalizar como as mensagens são exibidas no Message Viewer. Em particular, como você pode exibir as mensagens em JSON (em vez da representação padrão em XML).

image

Mensagens são objetos usados para comunicar componentes de produções de interoperabilidade. No meu exemplo, eu defini uma mensagem que mais tarde eu serializo como JSON para enviar a uma API externa. Essa mensagem é definida como uma mensagem regular e também como um %JSON.Adaptor, para que eu possa exportar/importar diretamente para ou a partir de JSON.

Class interop.msg.
0
0 27
Artigo Evandro Wendt · jan 10 5m read

Olá a todos,

Sou eu de novo 😁. No artigo anterior, Writing a REST api service for exporting the generated FHIR bundle in JSON, nós geramos um recurso DocumentReference, com o conteúdo codificados em Base64.

Question!! Is it possible to write a REST service for decoding it? Because I am very curious what is the message data talking about🤔🤔🤔

Duvida!! É possível escrever um serviço REST para decodificar isso? Porque estou muito curioso para saber o conteúdo da mensagem 🤔🤔🤔

OK, Vamos começar!

1. Crie uma nova classe utilitária datagen.utli.

0
0 37
Pergunta Evandro Wendt · jan 2

Existe uma Master Table dentro do IRIS que estou preenchendo a partir do Epic, mas quero compartilhá-la com nossa equipe de Enterprise Application Development (Web). Como teste, consegui usar _SYSTEM a partir do Postman para executar o seguinte.

POST /api/atelier/v1/xxxx/action/query HTTP/1.1
Host: xxxxxxxx
Content-Type: application/json
Authorization: ••••••
Cookie: CSPSESSIONID-SP-443-UP-api-atelier-=00f0000000000AKyLjBfUvU$MpFD8UT8y$EoNKNw1ixZeXN4_Q; CSPWSERVERID=hzZAT5rb
Content-Length: 86

{"query": "SELECT * FROM osuwmc_Epic_Clarity.
1
0 36
Artigo Evandro Wendt · jan 6 1m read

Muitas vezes, ao trabalhar com dados FHIR, por exemplo com o IRIS For Health, você vai achar útil criar uma operação FHIR personalizada. O padrão FHIR já vem com um conjunto de operações definidas (como $everything), mas uma operação personalizada é útil quando você precisa criar funcionalidades extras que vão além do conjunto de operações padrão do FHIR. A documentação guia você passo a passo (embora este comentário possa ser útil para quem está começando).

0
0 26
Artigo Evandro Wendt · jan 6 2m read

Rubrica de FAQ da InterSystems

Se você tentar eliminar uma global que está mapeada no nível de subscrito a partir do nó raiz, você receberá um erro e ela não será excluída. Isso ocorre porque o comando kill para globais mapeadas no nível de subscrito não pode ser usado atravessando mapeamentos.

// Suppose subscript-mapped globals exist in different databases, as shown below:
^TEST(A*~K*) -> database A
^TEST(L*~Z*) -> database B

// Trying to kill from the top level will result in a <SLMSPAN> error.
NAMESPACE>Kill ^TEST
<SLMSPAN> <- This error is output.
0
0 35
Artigo Evandro Wendt · jan 4 2m read

Rubrica de FAQ do InterSystems

O utilitário ^%GCMP pode ser usado para comparar o conteúdo de dois globals.

Por exemplo, para comparar ^test e ^test nos namespaces USER e SAMPLES, ficaria assim:

No exemplo abaixo, 700 globais idênticas são criadas nos dois namespaces, e o conteúdo de uma delas é alterado para torná-lo o alvo de detecção.

0
0 34
Artigo Evandro Wendt · jan 4 1m read

gj :: configExplorer é uma nova extensão do VS Code que se integra ao Server Manager e utiliza o Structurizr para gerar diagramas de configuração dos seus servidores.

Aqui está um curto vídeo introdutório.

Ao usar a API Nativa do Intersystems IRIS para Node.js, não é necessário instalar nenhum código de suporte nos servidores. Essa escolha de tecnologia também permite que ele participe do atual concurso da Developer Community.

0
0 38
Artigo Evandro Wendt · jan 4 1m read

Olhando para o meu banco de dados, vejo que tenho um ^rINDEXSQL muito grande! Por que isso? 😬

Na página de SQL do Management Portal, em "SQL Statements", vejo um botão 'Clean stale' – o que ele faz? 🤔

Na lista de Statements, alguns têm um valor em 'Location' e outros não. Como isso acontece? 🤨

0
0 27
Artigo Evandro Wendt · jan 4 2m read

Olá a todos,

Primeiro quero reconhecer @Theo Stolker e @Rupert Young, porque eles me ajudaram com a solução.

Quando vocês usam EnsLib.SQL.Snapshot como uma propriedade na mensagem de resposta para retornar dados do Snapshot (por exemplo, de uma Business Operation para um Business Process), os dados do Snapshot não são limpos com a tarefa/serviço de depuração de mensagens.

Class ResponseMessage Extends Ens.Response

{

    Property SnapshotProp As EnsLib.SQL.Snapshot;

}

Os dados ficarão presos no global: ^Ens.AppData. Vocês podem encontrá-los com esta consulta em System > Globals: ^Ens.AppData("EnsLib.

0
0 25
Artigo Evandro Wendt · jan 4 1m read

Já faz algum tempo que criei um pequeno exemplo para implantar rapidamente, usando Docker, instâncias do InterSystems IRIS conectadas via ECP. O tempo passou e, como tudo, precisava de uma revisão e atualização...

0
0 34
Artigo Evandro Wendt · jan 4 1m read

Tenho o prazer de anunciar a publicação do gj :: dataLoader, uma nova extensão do VS Code que simplifica a tarefa de carregar dados de arquivos CSV locais em tabelas SQL dos seus servidores InterSystems IRIS.

Aqui está um vídeo introdutório:

gj :: dataLoader já está disponível no Marketplace para instalação direta no VS Code. É a minha proposta para o concurso “Bringing Ideas to Reality” 2025 e coloca em prática esta ideia: https://ideas.intersystems.com/ideas/DPI-I-667

Seus comentários serão bem-vindos.

0
0 28
Artigo Evandro Wendt · jan 2 3m read

Embeddedpy-bridge: Um kit de ferramentas para Embedded Python

Visão geral

Embedded Python é um divisor de águas para o InterSystems IRIS, oferecendo acesso ao vasto ecossistema Python diretamente dentro do banco de dados. No entanto, fazer a ponte entre ObjectScript e Python às vezes pode parecer como traduzir entre dois mundos diferentes.

Para tornar essa transição perfeitamente utilizável, embeddedpy-bridge.

0
0 29
Artigo Evandro Wendt · jan 2 3m read

Ao trabalhar com a Interoperabilidade da InterSystems (Iris / Health Connect / Ensemble), os dados de configuração costumam estar distribuídos entre vários itens de produção: serviços, processos, operações, adaptadores e suas configurações.

Uma necessidade operacional ou de segurança comum é responder a perguntas como:

  • Quais interfaces fazem referência a caminhos do sistema de arquivos?
  • Onde estão configurados diretórios, compartilhamentos de rede ou caminhos absolutos?
  • É possível auditar ou documentar rapidamente essas informações em todas as minhas produções?
0
0 30
Artigo Evandro Wendt · Dez. 31, 2025 1m read

SET atribui um valor à variável em tempo de execução.

#DIM declara a variável e o seu tipo de dado em tempo de compilação.







SET #DIM
Torna a variável dinâmica. Melhora a legibilidade.
Sem tipagem. Habilita IDE auto-completion.
Tempo de execução Util para referência a objetos.

#DIM name As %String
Set name = "Micheal Scott"
#DIM age As %Numeric
Set age = 36
#DIM employer As App.Employer               ; compile time
Set employer = ##class(App.Employer).%New() ; runtime 

SET ou #DIM? Seu design, suas regras.

0
0 37
Artigo Evandro Wendt · Dez. 30, 2025 4m read

Se você olhar o arquivo values.yaml do Helm chart do IKO, você encontrará:

useIrisFsGroup: false 

Vamos detalhar o que isso é e em quais situações você pode querer configurá-lo como true.

FsGroup se refere ao grupo do sistema de arquivos.

Por padrão, os volumes do Kubernetes pertencem ao usuário root, mas precisamos que o IRIS seja o dono de seus arquivos (o IRIS em containers é instalado sob o usuário irisowner). Para contornar isso, utilizamos um de dois métodos:

1) initContainers

Os initContainers são executados antes dos containers da aplicação (como o IRIS) em um pod.

0
0 27