New post

Find

Article
· Apr 3 1m read

Note about the StayConnected setting for TCP adapters

InterSystems FAQ rubric

The default settings for Stay Connected and Pool Size for business hosts using the TCP adapter are as follows:

StayConnected = -1(no timeout)
PoolSize = 1

If a network problem causes a connection to a business host to be lost, the production side will be unable to detect this and will not accept new connections. In this situation, no event is recorded in the event log. If StayConnected is set to its default value (-1), connections will not time out, and you will need to restart the business host before it can accept new connections. We recommend setting StayConnected to a value greater than or equal to 0 to avoid this situation.

For example, if you set it to 300 (seconds), a TCP business host can automatically disconnect and reconnect if it does not receive any new messages for 300 seconds or more.

For busy systems, you would typically set the StayConnected value to a smaller value, such as 5 seconds.

Discussion (0)1
Log in or sign up to continue
Announcement
· Apr 3

Technological Bonuses Results for the InterSystems AI Programming Contest

Hi Developers!

We are happy to present the bonuses page for the applications submitted to the InterSystems AI Programming Contest!

See the results below.

Project

Agent AI

Vector Search

Embedded Python

LLM AI or LangChain

IntegratedML

Docker

IPM

Online Demo

Community Idea Implementation

Find a bug

First Article on DC

Second Article on DC

Video on YouTube

First Time Contribution

Suggest New Idea

Total Bonus

Nominal 5 4 3 3 3 2 2 2 4 2 2 1 3 3 1 40
ollama-ai-iris   4 3 3             2     3   15
mcp-server-iris 5   3 3             2   3     16
langchain-iris-tool 5 4 3 3   2 2 2 4   2 1 3   1 32
AiAssistant   4 3 3   2 2             3   17
pax-ai-iris     3                     3   6
IRIS-Intelligent-Butler   4 3 3                   3   13
iris-data-analysis   4 3 3   2 2       2     3   19
bg-iris-agent 5     3   2 2 2     2   3 3   22
Facilis 5   3 3   2         2         15
Vitals Lab   4   3                 3 3   13
iris-AgenticAI 5 4 3 3   2         2 1       20
toot   4 3     2         2     3   14
iris-clinical-assistant     3 3   2               3   11
oncorag 5 4   3   2               3   17
iris-easybot 5 4 3     2                   14

Please apply with your comments for new implementations and corrections to be made here in the comments or in Discord.

7 Comments
Discussion (7)3
Log in or sign up to continue
InterSystems Official
· Apr 3

Alerta: InterSystems IRIS 2024.3 – Problema no Parser JSON no AIX e Incompatibilidades do IntegratedML

Resumo de Alertas

Alerta ID Produto & Versões Afectadas Requisitos Explícitos
DP-439207  InterSystems IRIS® data platform 2024.3 (AIX) Instalações AIX Usando JSON e conjuntos de Caracteres Unicode non-Latin-1 
DP-439280  InterSystems IRIS 2024.3 (containers com IntegratedML)  IntegratedML Containers usando TensorFlow

 

Detalhes dos Alertas

DP-439207 - Problemas no Parser JSON Unicode em AIX

Um bug foi identificado no InterSystems IRIS 2024.3.0 em instâncias do AIX que afeta a análise de strings JSON Unicode. O problema surge quando o método %FromJSON() ou %FromJSONFile() analisa strings que contêm caracteres com valores menores que $CHAR(256) seguidos por caracteres Unicode que excedem $CHAR(255). O processo de conversão transforma incorretamente os caracteres anteriores em $CHAR(0), levando à corrupção silenciosa de dados. Esse problema afeta apenas a versão 2024.3 do AIX dos seguintes produtos:

  • InterSystems IRIS
  • InterSystems IRIS for Health
  • HealthShare® Health Connect

Avaliação do Impacto 

  • Quando isso ocorre, caracteres incorretos podem ser armazenados no banco de dados ou passados ​​para interfaces sem acionar erros.
  • O defeito foi introduzido no IRIS 2024.3.0 e foi resolvido com DP-439207.
  • Fluxos de trabalho afetados: esse problema ocorre apenas em instalações Unicode que executam AIX, afetando aplicativos que processam dados que contêm uma mistura de caracteres ASCII e Unicode.

Resolução

  • Se você está usando InterSystems IRIS 2024.3.0 em instancias AIX, então você deve atualizar para InterSystems IRIS 2025.1.0 assim que possível.

Ações necessárias do Cliente 

  1. Identificar os Sistemas Impactados:
    • Determinar se está usando InterSystems IRIS 2024.3.0 em uma instancia AIX com banco de dados com caracteres Unicode não Unicode misturados.
  2. Caminho de Atualização:
    • Atualizar para InterSystems IRIS 2025.1.0 assim que possível.

 

DP-439280 - Problemas no IntegratedML em Container com TensorFlow

Clientes usando uma das versões em container do IRIS 2024.3 pode encontrar erros de treinamento ao usar o IntegratedML.

containers.intersystems.com/intersystems/iris-ml:2024.3

 

Avaliação do Impacto

  • Os clientes que utilizam o IntegratedML nos contêineres IRIS 2024.3 fornecidos pela InterSystems enfrentarão falhas no treinamento do modelo devido a problemas de compatibilidade com o TensorFlow e dependências relacionadas.

Resolução

  • Os clientes que desejam usar o IntegratedML com o IRIS ou o IRIS for Health em contêineres são incentivados a criar seus próprios contêineres seguindo os conselhos publicados na Comunidade de Desenvolvedores.

Ações necessárias do Cliente

  • Para continuar usando o IntegratedML com o AutoML, os clientes devem gerenciar dependências manualmente usando o gerenciador de pacotes pip, conforme descrito acima. Isso garante a compatibilidade e a funcionalidade adequada dos componentes do AutoML, como scikit-learn, dentro do seu ambiente Python do IntegratedML.

Para mais Informações Se você tiver dúvidas ou precisar de assistência, entre em contato com o Worldwide Response Center (WRC) da InterSystems. 

Discussion (0)1
Log in or sign up to continue
Announcement
· Apr 3

[Video] Best Practices for Interface Naming Conventions

Hi, Community!

How do you choose names for your interface components? Why is naming important? Learn from our experts:

Best Practices for Interface Naming Conventions

In this video, @Jess Jowdy and @John Goodgame discuss the importance of naming conventions that support your organization's interface development.

Want to share your own experiences with naming or share any tips? Add your comments below this video!

Discussion (0)1
Log in or sign up to continue
Article
· Apr 3 4m read

d[IA]gnosis: Vetorizando Diagnósticos com Python Embutido e Modelos LLM

No artigo anterior, apresentamos o aplicativo d[IA]gnosis, desenvolvido para auxiliar na codificação de diagnósticos na CID-10. Neste artigo, veremos como o InterSystems IRIS for Health nos fornece as ferramentas necessárias para a geração de vetores a partir da lista de códigos da CID-10, usando um modelo de linguagem pré-treinado, seu armazenamento e a subsequente busca por similaridades em todos esses vetores gerados.

Introdução

Uma das principais características que surgiram com o desenvolvimento de modelos de IA é o que conhecemos como RAG (Geração Aumentada por Recuperação), que nos permite melhorar os resultados dos modelos LLM ao incorporar um contexto ao modelo. Bem, em nosso exemplo, o contexto é dado pelo conjunto de diagnósticos da CID-10 e, para usá-los, devemos primeiro vetorizá-los.

Como vetorizar nossa lista de diagnósticos?

SentenceTransformers e Embedded Python

Para a geração de vetores, utilizamos a biblioteca Python SentenceTransformers , que facilita muito a vetorização de textos livres a partir de modelos pré-treinados. Do próprio site deles:

Sentence Transformers (também conhecido como SBERT) é o módulo Python de referência para acessar, usar e treinar modelos de incorporação de texto e imagem de última geração. Pode ser usado para calcular incorporações usando modelos Sentence Transformer (início rápido) ou para calcular pontuações de similaridade usando modelos Cross-Encoder (início rápido). Isso desbloqueia uma ampla gama de aplicações, incluindo busca semântica similaridade textual semântica, e mineração de paráfrases.

Dentre todos os modelos desenvolvidos pela comunidade SentenceTransformers, encontramos o BioLORD-2023-M, um modelo pré-treinado que gerará vetores de 786 dimensões.

Este modelo foi treinado usando o BioLORD, uma nova estratégia de pré-treinamento para produzir representações significativas para frases clínicas e conceitos biomédicos.

As metodologias de ponta operam maximizando a similaridade na representação de nomes que se referem ao mesmo conceito e evitando o colapso por meio do aprendizado contrastivo. No entanto, como os nomes biomédicos nem sempre são autoexplicativos, às vezes resulta em representações não semânticas.

O BioLORD supera esse problema fundamentando suas representações de conceitos usando definições, bem como descrições curtas derivadas de um grafo de conhecimento multirrelacional que consiste em ontologias biomédicas. Graças a essa fundamentação, nosso modelo produz representações de conceitos mais semânticas que correspondem mais de perto à estrutura hierárquica das ontologias. O BioLORD-2023 estabelece um novo estado da arte para similaridade de texto tanto em frases clínicas (MedSTS) quanto em conceitos biomédicos (EHR-Rel-B).

Como você pode ver em sua definição, este modelo é pré-treinado com conceitos médicos que serão úteis ao vetorizar tanto nossos códigos CID-10 quanto texto livre.

Para o nosso projeto, baixaremos este modelo para acelerar a criação de vetores:

if not os.path.isdir('/shared/model/'):
    model = sentence_transformers.SentenceTransformer('FremyCompany/BioLORD-2023-M')            
    model.save('/shared/model/')

Uma vez em nossa equipe, podemos inserir os textos a serem vetorizados em listas para acelerar o processo. Vamos ver como vetorizamos os códigos CID-10 que registramos anteriormente em nossa classe ENCODER.Object.Codes.

st = iris.sql.prepare("SELECT TOP 50 CodeId, Description FROM ENCODER_Object.Codes WHERE VectorDescription is null ORDER BY ID ASC ")
resultSet = st.execute()
df = resultSet.dataframe()

if (df.size > 0):
    model = sentence_transformers.SentenceTransformer("/shared/model/")
    embeddings = model.encode(df['description'].tolist(), normalize_embeddings=True)

    df['vectordescription'] = embeddings.tolist()

    stmt = iris.sql.prepare("UPDATE ENCODER_Object.Codes SET VectorDescription = TO_VECTOR(?,DECIMAL) WHERE CodeId = ?")
    for index, row in df.iterrows():
        rs = stmt.execute(str(row['vectordescription']), row['codeid'])
else:
    flagLoop = False

Como você pode ver, primeiro extraímos os códigos armazenados em nossa tabela de códigos CID-10 que ainda não vetorizamos, mas que registramos em uma etapa anterior após extraí-los do arquivo CSV, depois extraímos a lista de descrições a serem vetorizadas e, usando a biblioteca Python sentence_transformers, recuperaremos nosso modelo e geraremos os embeddings associados.

Finalmente, atualizaremos o código CID-10 com a descrição vetorizada executando o UPDATE. Como você pode ver, o comando para vetorizar o resultado retornado pelo modelo é o comando SQL TO_VECTOR no IRIS.

Usando-o no IRIS

Ok, temos nosso código Python, então só precisamos envolvê-lo em uma classe que estende Ens.BusinessProcess e incluí-la em nossa produção, depois conectá-la ao Business Service encarregado de recuperar o arquivo CSV e pronto!

Vamos dar uma olhada em como esse código ficará em nossa produção:

Como você pode ver, temos nosso Business Service com o adaptador EnsLib.File.InboundAdapter, que nos permitirá coletar o arquivo de códigos e redirecioná-lo para nosso Business Process, no qual realizaremos todas as operações de vetorização e armazenamento, fornecendo-nos um conjunto de registros como o seguinte

Agora nosso aplicativo estaria pronto para começar a procurar possíveis correspondências com os textos que enviamos a ele!

No próximo artigo...

No próximo artigo, mostraremos como o front-end do aplicativo desenvolvido em Angular 17 é integrado à nossa produção no IRIS for Health e como o IRIS recebe os textos a serem analisados, os vetoriza e busca similaridades na tabela de códigos CID-10.

Não perca!

1 Comment
Discussion (1)2
Log in or sign up to continue