Find

Article
· Oct 30 7m read

Optimisation de l'exploration des données FHIR au moyen de modèles linguistiques locaux : intégration d'IRIS et d'Ollama

Introduction

Dans mon dernier article, j'ai présenté FHIR Data Explorer, une application de validation de concept qui connecte InterSystems IRIS, Python, et Ollama afin de permettre la recherche sémantique et la visualisation des données de soins de santé au format FHIR. Ce projet participe actuellement au concours InterSystems External Language Contest.

Dans cette suite, nous verrons comment j'ai intégré Ollama pour générer les résumés des dossiers médicaux directement à partir des données FHIR structurées stockées dans IRIS, à l'aide de modèles linguistiques locaux légers (LLM) tels que Llama 3.2:1B ou Gemma 2:2B.

L'objectif était de créer un pipeline d'IA entièrement local capable d'extraire, de formater et de présenter les dossiers médicaux des patients tout en garantissant la confidentialité et le contrôle total des données.

Toutes les données des patients utilisées dans cette démonstration proviennent de paquets FHIR, qui ont été analysés et chargés dans IRIS via le module IRIStool. Cette approche facilite la requête, la conversion et la vectorisation des données de soins de santé à l'aide d'opérations pandas familières en Python. Si vous désirez en savoir plus sur la manière dont j'ai construit cette intégration, consultez mon article précédent Création d'un référentiel vectoriel FHIR avec InterSystems IRIS et Python via le module IRIStool.

Les deux outils, IRIStool et FHIR Data Explorer sont disponibles sur InterSystems Open Exchange — et font partie de mes contributions au concours. Si vous les trouvez utiles, n'hésitez pas à voter pour eux!

1 new Comment
Discussion (1)1
Log in or sign up to continue
Article
· Oct 30 4m read

Complemento IRIS para Home Assistant (HAOS)

Complemento de InterSystems IRIS Community Edition para HAOS

Ejecutad InterSystems IRIS dentro de Home Assistant, como un complemento. Antes de que descartéis este artículo pensando que se trata solo de una curiosidad, os invito a deteneros un momento y ver lo fácil que es lanzar aplicaciones basadas en IRIS usando esta plataforma. Si echáis un vistazo a Open Exchange, veréis decenas y decenas de aplicaciones que merecen ser utilizadas, pero que en la práctica quedan abandonadas como simples proyectos en Git, y que solo pueden ejecutarse si estáis dispuestos a enfrascaros en una batalla con containerd o Docker. Con un simple repositorio de Git y una especificación, ahora podéis construir vuestra aplicación en IRIS y hacer que se ejecute a través de un marketplace, reduciendo al mínimo las complicaciones para vuestros usuarios finales. Ejecutadla junto a Ollama y las implementaciones de LLM/LAM, exponed cualquier elemento de IRIS como un sensor o cread un endpoint para que vuestra aplicación en IRIS interactúe con cualquier cosa que tengáis conectada a HAOS. ¿Queréis reiniciar una producción de IRIS con solo accionar un interruptor físico o mediante una IA asistida? Podéis hacerlo con este complemento, o con uno propio, justo al lado de los entusiastas de la automatización del hogar.

Empezando

Estamos ejecutando HAOS y hemos comprobado la ventana “Acerca de” para confirmar que nuestro método de instalación es “Home Assistant OS”.

Instalación

Para Home Assistant OS, seguid estos pasos:

  • Añadid el repositorio en la Tienda de Complementos.
  • Reiniciad el Supervisor.
  • Buscad “InterSystems IRIS Community Add-ons”, instaladlo y ponedlo en marcha.
  • Abrid el Portal de Gestión del Sistema.

Añadir repositorio

El repositorio del complemento iris-haos es:

https://github.com/sween/iris-haos

Id a la Tienda de Complementos, pulsad los tres puntos en la esquina superior derecha y seleccionad “repositorios”.

Haced clic en “añadir” y cerrad el cuadro de diálogo.

Reiniciad el Supervisor
Desde la CLI o la consola de HAOS, ejecutad:

ha addons reload

De vuelta en la Tienda de Complementos, deberíais ver IRIS en la lista y disponible.

Seleccionad el complemento, instaladlo y ponedlo en marcha.

Podéis configurar posteriormente las especificaciones de los puertos o añadir nuevos a vuestra aplicación; este está configurado solo para el SMP.

El registro debería mostrar una salida muy familiar del archivo messages.log del contenedor.

A continuación, pulsad el botón “Open Web UI” ¡y ya deberíais tener IRIS funcionando en HAOS!

This is made possible by the "network_mode": "host" directive in the add on, which will allow the ports to be exposed to the haos host.

Punto extra

Extraed una métrica de IRIS y mostradla en HAOS.

Añadid lo siguiente a vuestro configuration.yaml:

sensor:
  - platform: rest
    name: iris_log_reads_per_sec
    resource: http://127.0.0.1:52773/api/monitor/metrics
    value_template: >
      {% set lines = value.split('\n') %}
      {% for line in lines %}
        {% if line.startswith('iris_log_reads_per_sec ') %}
          {{ line.split()[-1] }}
        {% endif %}
      {% endfor %}

Por alguna razón, tuve que reiniciar el núcleo para activar el sensor.

ha core restart

Los sensores de HAOS pueden crearse con simples llamadas REST, así que aquí estamos extrayendo los datos de la API de métricas de Prometheus de IRIS, que se ejecuta en el complemento de IRIS dentro de HAOS.

Ahora que es un sensor, podéis añadirlo al panel de control, crear automatizaciones basadas en sus valores, exponerlo a la IA ambiental… ¡y automatizar sin límites!

Los detalles están en el repositorio de GitHub, pero os adelanto que no es gran cosa. Echadle un vistazo al repositorio, clonadlo o consultadlo en Open Exchange; con un par de archivos y un contenedor, podéis crear vuestros propios complementos también.


Aquí está la configuración:

{
  "name": "InterSystems IRIS Health Community (HAOS)",
  "version": "0.1.1",
  "slug": "irishealth",
  "description": "Runs InterSystems IRIS Health Community as a Home Assistant add-on",
  "startup": "services",
  "boot": "auto",
  "arch": ["amd64", "aarch64"],
  "ports": { "1972/tcp": 1972, "52773/tcp": 52773 },
  "icon": "https://raw.githubusercontent.com/sween/iris-haos/main/irishealth/icon.png",
  "options": {
    "endpoint": "http://localhost:52773/csp/sys/UtilHome.csp"
  },
  "schema": {
    "endpoint": "str"
  },
  "webui": "http://[HOST]:[PORT:52773]/csp/sys/UtilHome.csp"
}

Aquí está el Dockerfile:

FROM containers.intersystems.com/intersystems/irishealth-community:2025.1

¡Disfrutadlo!

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

Consejos para manejar grandes volúmenes de datos

Hola comunidad,

Quería compartir mi experiencia trabajando en proyectos con grandes volúmenes de datos. A lo largo de los años, he tenido la oportunidad de manejar enormes cantidades de datos de pacientes, datos de aseguradoras y registros transaccionales mientras trabajaba en la industria hospitalaria. He tenido la oportunidad de crear informes muy extensos que requerían usar lógicas avanzadas para obtener datos de múltiples tablas, cuyos índices no me ayudaban a escribir un código eficiente.

Esto es lo que he aprendido sobre cómo gestionar grandes volúmenes de datos de manera eficiente.

Elegir el método de acceso a datos adecuado

Como todos sabemos en esta comunidad, IRIS ofrece múltiples formas de acceder a los datos. Elegir el método correcto dependerá de lo que necesitemos.

  • Acceso directo a los Globales: el más rápido para operaciones masivas de lectura/escritura. Por ejemplo, si tengo que recorrer índices y obtener datos de pacientes, puedo iterar sobre los globales para procesar millones de registros. Esto ahorra mucho tiempo.
Set ToDate=+H
Set FromDate=+$H-1 For  Set FromDate=$O(^PatientD("Date",FromDate)) Quit:FromDate>ToDate  Do
. Set PatId="" For  Set PatId=$Order(^PatientD("Date",FromDate,PatID)) Quit:PatId=""  Do
. . Write $Get(^PatientD("Date",FromDate,PatID)),!
  • Uso de SQL: útil para requisitos de generación de informes o análisis, aunque más lento para conjuntos de datos muy grandes.

Optimización de operaciones masivas

Procesar millones de registros uno por uno es lento y pesado. Para optimizar, he comprobado que guardar en lotes, usar globales temporales para los pasos intermedios y dividir los trabajos grandes en tareas más pequeñas marca una gran diferencia. Desactivar los índices no esenciales durante las inserciones masivas también acelera el proceso.

Uso de Streams

Para textos largos o cargas en formato XML o JSON, los objetos Stream evitan la sobrecarga de memoria. Trabajar con archivos muy grandes puede consumir mucha memoria si se cargan de una sola vez. Prefiero usar objetos Stream para leer o escribir los datos por partes. Esto mantiene el proceso rápido y eficiente.

Set stream = ##class(%Stream.GlobalCharacter).%New()
Do stream.CopyFromFile("C:\Desktop\HUGEDATA.json")
w "Size: "_stream.Size(),!

Esta será una forma sencilla de manejar los datos de manera segura sin ralentizar el sistema.

Así que eso es todo. Manejar grandes volúmenes de datos no se trata solo de hacer las cosas más rápidas, sino de elegir la forma correcta de acceder, almacenar y mantener el sistema equilibrado de manera inteligente.

Desde la migración de millones de registros de pacientes hasta la creación de API que gestionan conjuntos de datos bastante grandes, estos enfoques han marcado una verdadera diferencia en el rendimiento y la capacidad de mantenimiento.

Si estás trabajando con conceptos similares y quieres intercambiar ideas, no dudes en ponerte en contacto con la autora original de este artículo, @Harshitha

 

¡Muchas gracias!

Discussion (0)1
Log in or sign up to continue
Question
· Oct 30

Namoh Packers and Movers

Namoh Packers and Movers is an ISO 9001:2015 certified company. It is one of the most trusted packers and movers in Jabalpur and Central India, delivering safe, reliable, and affordable relocation services for households, offices, vehicles, and storage solutions. With over a decade of expertise, we have helped thousands of families and businesses move seamlessly, making us a preferred relocation partner in the region.

With years of expertise, our skilled team provides custom clearing, warehousing, shifting, and relocation services at highly affordable prices across India. We are actively serving not only Jabalpur but also several major cities, making us one of the most trusted packers and movers in Satna, packers and movers in Balaghat and packers and movers in Bhopal.

Why Choose Namoh Packers and Movers?

• Decade-long experience in the relocation industry.

• Local, domestic, and corporate relocation expertise.

• Trained manpower, modern equipment & safe packing methods.

• Insurance coverage and tracking for peace of mind.

• Affordable, competitive pricing with no compromise on quality.

Discussion (0)1
Log in or sign up to continue
Article
· Oct 30 7m read

IRIS環境でのPythonプログラミング入門

img

この記事では、IRIS環境におけるPythonプログラミングの基礎について紹介します。

本題に入る前に、重要なトピックである「Pythonの仕組み」について説明します。これは、IRIS環境でPythonを使用して作業する際に起こりうる問題や制限を理解するのに役立ちます。

すべての記事と例は、以下のgitリポジトリで確認できます: iris-python-article

Pythonの仕組み

インタープリター型言語

Pythonはインタープリター型言語であり、コードはランタイム時に1行ずつ実行されます。スクリプトをインポートする場合でも同様です。

これはどういうことでしょうか? 以下のコードを見てみましょう。

Discussion (0)1
Log in or sign up to continue