Excelente artigo, Heloisa! Estou começando agora no IRIS vindo de C#/.NET e o exemplo da tabela PERSON deixou bem claro pra mim por que registros com volumes tão diferentes competindo pelas mesmas Globals pesam na busca.

Great article! Clear explanation of how CTEs in InterSystems IRIS improve query readability while remaining fully optimized by the engine. I especially liked the practical examples and the focus on when to use CTEs vs. other approaches.
Really cool explanation of agentic AI! I liked how the video shows the model actively choosing actions to fix bugs instead of following a fixed script — makes the whole process feel much smarter and more flexible. Great example!

Great post! irisconns is a simple way to manage IRIS connections by separating configuration from code, making projects cleaner and easier to maintain.

It clearly explains a practical workaround for running gj :: configExplorer on Windows using Docker and VS Code Dev Containers. The step-by-step guidance is easy to follow, and leveraging Docker Desktop makes the setup accessible even without a separate Linux host. Very useful for developers wanting to explore IRIS configurations in a visual way.

Excellent article! It clearly demonstrates how to integrate FHIR, InterSystems IRIS, and Python to build modern semantic search solutions in healthcare. Practical and highly relevant.
Great project! IRIStool makes working with IRIS much more intuitive using pandas, and the Streamlit UI is a great addition for easy data exploration.

I haven't faced this specific scenario myself, but your question caught my attention so I looked into it, hope this helps!

The root of the problem seems to be that %ValidateIndices doesn't distinguish between "found 1 corrupted row" and "found 5 million corrupted rows" it just keeps appending to the errors array until memory gives up.

A memory-safe approach would be to validate one index at a time and Kill the errors array right after checking it. Since you only need the index *name*, not every bad row ID, there's no reason to keep that data around


ClassMethod GetCorruptedIndexNames(pClassName As %String) As %String
{
   Set tCorrupted = ""
   Set tMeta = ##class(%Dictionary.CompiledClass).%OpenId(pClassName)
   If '$IsObject(tMeta) { Write "Class not found.", ! Quit "" }

   For i = 1:1:tMeta.Indices.Count() {
       Set tIndexName = tMeta.Indices.GetAt(i).Name

       Kill tErrors, tIDList
       Set tSC = $CLASSMETHOD(pClassName, "%ValidateIndices", tIndexName, 0, .tIDList, .tErrors)

       If $DATA(tErrors) > 0 {
           Set tCorrupted = tCorrupted _ $S(tCorrupted'="",1:"") _ tIndexName
       }

       Kill tErrors, tIDList  // don't let it accumulate
   }

   Quit tCorrupted
}

This way the memory footprint stays flat no matter how large the table is the array never holds more than one index worth of data at a time.

If you hit a case where even a single index overwhelms memory, you can go one level further and split by ID range using the start/end parameters of %ValidateIndices, breaking early as soon as $DATA(tErrors) > 0.

Estou iniciando agora com InterSystems IRIS e ver uma aplicação completa que combina interoperabilidade, Vector Search e Python Native SDK em um problema real de saúde ajuda muito a entender como essas peças se encaixam na prática.

O diagrama de arquitetura é especialmente útil para visualizar o fluxo completo: do upload do áudio até a geração da resposta via LLM. Dá pra perceber como o IRIS serve como espinha dorsal da solução, centralizando tanto o armazenamento dos objetos quanto a busca vetorial.

Projeto muito interessante! Estou começando a trabalhar com InterSystems IRIS agora e ver um exemplo prático que une Python embarcado, componentes de interoperabilidade e Vector Search em uma única aplicação é muito valioso.

A estrutura do projeto está bem organizada e com responsabilidades bem separadas — FastAPI no backend, BAML cuidando da camada de LLM e o IRIS fazendo o que faz de melhor no lado dos dados. O guia de configuração passo a passo com Docker também facilita bastante para quem quer rodar localmente.

Esse tipo de caso de uso real ajuda muito a conectar os fundamentos do IRIS com fluxos modernos de IA. Obrigado pelo artigo detalhado!

Muito útil a abordagem de dividir segmentos repetitivos HL7 de forma configurável — isso facilita bastante o roteamento e reaproveitamento das integrações. Parabéns por compartilhar!

Great article! Really liked how you used IKO with Tailscale to simplify a multi-cloud, cross-region setup. The notes on the practical issues (DNS, routing, time sync) were especially helpful—those details make a big difference in real deployments. Looking forward to seeing how you evolve the automation around node roles!

The names Castor and Pollux come from the twin stars of the Gemini constellation. This directly reflects the use of the Gemini AI model in the solution and symbolizes the idea of two complementary AI assistants working together on unified healthcare data.

This is a very practical tip! The ^%GCMP utility is a simple yet powerful way to quickly identify differences between globals across namespaces. I especially like how the example clearly demonstrates detecting a single changed node, which makes it easy to understand real-world usage.

Also, mentioning ^DATACHECK for cross-server comparisons is a great addition, since that’s a common scenario in distributed environments. Thanks for sharing this — it’s definitely a useful tool for debugging and data validation!

This is a very insightful demo showcasing how Health Galaxy simplifies the integration between AI and healthcare systems. I found it particularly interesting how it leverages FHIR to create a unified access point, allowing AI agents to interact with patient data and automate workflows like scheduling and insurance checks. The ease of setup—just connecting to a FHIR endpoint and generating an interface—really highlights its practicality. Overall, it’s a great example of how interoperability and AI can come together to reduce manual effort and accelerate innovation in healthcare applications.

Great points here. One thing that really stands out in ObjectScript is how much understanding the fundamentals changes your experience with the language. Globals, scoping, and mixing procedural code with OO patterns can feel unusual at first, especially coming from Python or JavaScript, but once it “clicks,” you start appreciating how productive and powerful the ecosystem can be.

I also agree that many beginners overcomplicate solutions by trying to force patterns from other languages instead of embracing the native strengths of IRIS/ObjectScript. Clean, readable code and good error handling make an even bigger difference in environments where persistence and performance are so tightly connected.