Find

Article
· Dec 5, 2024 3m read

Celebrating a Journey of Dedication

Today, we take a moment to shine the spotlight on one of the true pillars of the InterSystems Developer Community, @Alberto Fuentes. His commitment, expertise, and enthusiasm have left an indelible mark on the Developer Community, and we couldn’t be more grateful. Alberto has been a part of the InterSystems ecosystem for over 15 years, starting his journey with InterSystems technology back in 2008. Since then, he has worn many hats, from integrating Ensemble at his previous job to officially joining InterSystems in 2011 and now holding the position of Sales Engineer. Over the years, he’s witnessed—and contributed to—some of the most significant milestones in the company’s history.

🤩  Let’s dive into his remarkable journey!

From the birth of InterSystems IRIS to the adoption of FHIR, the expansion of the HealthShare family, and the rise of cloud and container technologies, Alberto has been at the forefront of these transformative changes. “It’s been a long and rewarding journey, filled with countless hours of projects, demos, and customer meetings,” he reflects. His professional growth has been shaped by a variety of memorable projects and challenges. Implementing Health Connect as a corporate integration engine across regions in Spain, aiding partners in optimizing performance for critical scenarios, and collaborating with startups in the Caelestinus program are just a few highlights.

Some of his most impactful contributions have even become invaluable resources for the Developer Community:

  • Healthcare HL7 XML Package: meeting interoperability requirements in Spanish regions by extending InterSystems’ interoperability features.
  • DataPipe Package + UI: enhancing IRIS’s data ingestion capabilities for Data Fabric projects, offering ready-to-use tools for partners.

From the very start, Alberto has been an active and enthusiastic member of the Developer Community, with a particular focus on the Spanish Developer Community. His contributions include publishing articles, developing Open Exchange projects, participating in contests, and hosting webinars—“the Spanish webinars are so much fun!” he exclaims.

He cherishes the connections he’s made within the DC. Meetups stand out as particularly inspiring moments for him—sharing ideas, pizzas, and laughs over a game of Kahoot. It’s these human connections that make the Developer Community feel like a family.

Excited about the future, Alberto is diving into cutting-edge topics like Vector Search and Retrieval Augmented Generation (RAG). Having recently hosted a successful Spanish webinar on the subject, he’s eager to continue learning and sharing his knowledge with the wider Community. To newcomers, he offers this advice: “Explore the incredible collection of articles, run examples, and always post your questions. The Community is filled with amazing people ready to help!”

Outside of work, Alberto has a vibrant array of passions. From cooking and traveling to building models, swimming, and watching sports (Formula 1 and NFL, anyone?), his interests are as diverse as they are inspiring. Recently, he’s taken on the challenge of learning French and improving his sailing skills—all while making time for family adventures.

We sincerely thank @Alberto Fuentes for his tireless dedication, creativity, and generosity. Your contributions have inspired countless developers and enriched the Developer Community beyond measure. Here’s to many more years of innovation and collaboration! 🥂

11 Comments
Discussion (11)3
Log in or sign up to continue
Article
· Dec 5, 2024 4m read

EduVerse: Asistente de Aprendizaje Accesible

🌍 Inclusión e Innovación en la Educación 🌍
Nuestro proyecto reimagina el aprendizaje para todos los estudiantes, con un enfoque en la accesibilidad y experiencias interactivas. Diseñado con el objetivo de hacer que la educación sea atractiva e inclusiva, esta herramienta está creada para apoyar a estudiantes de todas las habilidades en el aprendizaje de material complejo de forma intuitiva.

💡 Lo que hace
Esta aplicación educativa transforma presentaciones de lecciones en sesiones de estudio interactivas:

  • Transformar Presentaciones: Con tecnología de Reconocimiento Óptico de Caracteres (OCR), la aplicación escanea y convierte diapositivas de presentaciones en texto digital y datos vectoriales, creando contenido accesible a partir de presentaciones estándar.
  • Conversaciones con IA: Nuestra app da vida a las presentaciones con un asistente de chat impulsado por IA, que permite a los usuarios hacer preguntas sobre cualquier tema tratado en las diapositivas. La IA utiliza Procesamiento de Lenguaje Natural (NLP) y LangChain para ofrecer respuestas inteligentes y contextualizadas.
  • Cuestionarios de Estilo Retro: Al final de cada sesión, los usuarios pueden poner a prueba sus conocimientos con cuestionarios de estilo retro generados automáticamente, que hacen que aprender sea divertido y refuercen su comprensión.

🔧 Cómo está construida
Combinamos tecnologías poderosas para crear una aplicación accesible y receptiva:

 

  • Frontend: Desarrollado en Next.js para una interfaz receptiva y fácil de usar.
  • Almacenamiento de Datos: Utilizamos InterSystems IRIS Vector Database para almacenar y recuperar eficientemente el contenido vectorizado de las presentaciones.
  • IA y PLN: Un modelo de aprendizaje de lenguaje (LLM) integrado con LangChain permite conversaciones significativas al hacer referencia tanto a la entrada del usuario como a los datos vectorizados de la presentación.
  • Backend: Backend con FastAPI para un rendimiento seguro y escalable.
  • Generación de Cuestionarios: Algoritmos de PLN crean cuestionarios dinámicos e interactivos que personalizan el aprendizaje en cada sesión.

Esta herramienta representa un paso adelante para hacer que la educación sea inclusiva, atractiva y accesible para todos.

Integrando la Búsqueda Vectorial de InterSystems IRIS: Una Guía Práctica

La Búsqueda Vectorial de InterSystems IRIS es una herramienta poderosa para desarrolladores que construyen aplicaciones con capacidades avanzadas de búsqueda vectorial. Al aprovechar IRIS Vector Search junto con FastAPI, podemos crear un sistema robusto de procesamiento y consulta de documentos. Este artículo te guiará en la integración de IRIS Vector Search en un proyecto FastAPI y en su configuración en tu máquina local, destacando características clave para un análisis inteligente de documentos.

Configuración de IRIS Localmente

  1. Clonad el repositorio:

git clone https://github.com/intersystems-community/iris-vector-search.git

  1. Inicia los contenedores de Docker (uno para IRIS, uno para Jupyter):

docker-compose up

 

Integración con FastAPI

Nuestro proyecto utiliza IRIS Vector Search para manejar el procesamiento de documentos y consultas basadas en similitud, lo que permite un almacenamiento y búsqueda eficientes en grandes volúmenes de datos de texto. Así es como integramos IRIS Vector Search en FastAPI.

Paso 1: iniciación

Primero, instalad el paquete necesario:

pip install langchain-iris

Ahora inicializamos nuestro almacén de vectores utilizando la clase IRISVector del módulo langchain_iris

from langchain_iris import IRISVector

vector_store = IRISVector.from_documents(

    embedding=embeddings,

    documents=docs,

    collection_name=COLLECTION_NAME,

    connection_string=IRIS_CONNECTION_STRING

)

Este fragmento de código crea un almacén de vectores a partir de los documentos proporcionados utilizando incrustaciones, almacenando los resultados en IRIS para una consulta rápida y eficiente.

 

Paso 2: Procesamiento de documentos

Cuando un usuario carga un PDF, la aplicación procesa el documento extrayendo el texto y dividiéndolo en fragmentos. Estos fragmentos luego se agregan al almacén de vectores de IRIS.

docs = text_splitter.split_documents(docs)

initialize_vector_store(docs)

Al descomponer cada documento en segmentos más pequeños, nos aseguramos de que cada fragmento sea indexado y almacenado, mejorando la precisión de las búsquedas basadas en similitud.

 

Paso 3: Consultar Documentos

Una vez que nuestros documentos han sido procesados y almacenados, podemos usar el almacén de vectores para búsquedas por similitud:

docs_with_score = vector_store.similarity_search_with_score(query, k=3)

Este comando devuelve los tres documentos más relevantes según la consulta, cada uno con una puntuación de relevancia asociada.

Discussion (0)1
Log in or sign up to continue
Article
· Dec 5, 2024 3m read

Configuration programmatique des connexions SSL avec le superserveur

Salutations chers membres de la communauté !

J'ai récemment déployé une image IRIS for Health sur un Docker avec une image Webgateway préconfigurée et je suis tombé sur le problème des configurations SSL qui nous permettent de nous connecter à l'instance IRIS en utilisant HTTPS et en passant par notre Webgateway.

Jusqu'à présent, j'avais toujours déployé IRIS for Health avec une licence communautaire, sur laquelle le serveur Web privé était toujours installé, je n'avais donc besoin que de configurer la connexion Webgateway avec l'instance IRIS déployée :

Accédez au Management Portal en utilisant l'URL fournie par le PWS et activez l'accès au Superserveur depuis son écran de configuration :

En sélectionnant le port 1972, nous pouvions voir les informations de sécurité et il nous suffisait d'activer les connexions SSL avec la configuration SSL/TLS %SuperServer précédemment créée :

Eh bien, avec les versions non communautaires, la dernière étape de la configuration n'est pas réalisable, car nous n'avons pas d'accès Web à notre instance IRIS. Par conséquent, nous devrons le faire par programmation afin que lors du déploiement de notre Docker, il crée non seulement la configuration SSL/TLS, mais active également les connexions SSL avec le superserveur que la passerelle Web utilisera pour la connexion.

Pour ce faire, nous devons utiliser la classe Security.Servers qui nous permet d'effectuer la même configuration. Ci-dessous, vous pouvez voir une méthode de classe qui créera la connexion SSL %SuperServer puis activera lesdites connexions avec le port 1972 :

Method EnableSSLSuperServer(password="")
{
    New $NAMESPACE
    zn "%SYS"
    set certdir=..SSLDirectory
    set CAfile = ..SSLCertAuth
    set certfile = ..SSLCertificate
    set keyfile = ..SSLKey
    set sslconfig = ##class(Security.SSLConfigs).%New()
    do sslconfig.CAFileSet(certdir_CAfile)
    do sslconfig.CertificateFileSet(certdir_certfile)
    do sslconfig.PrivateKeyFileSet(certdir_keyfile)
    if password'="" do sslconfig.PrivateKeyPasswordSet(password)
    do sslconfig.DescriptionSet("SuperServer configuration")
    do sslconfig.EnabledSet(1)
    do sslconfig.TypeSet(1)
    do sslconfig.NameSet("%SuperServer")
    set sc=sslconfig.%Save()
    If (sc'=1) {
        Write !, "WARNING: Creating and saving the %SuperServer SSL configuration failed!"
        Write !, $system.Status.GetErrorText(sc)
    }

    If (sc'=1) {
        Write !, "WARNING: Getting the system security settings failed!"
        Write !, $system.Status.GetErrorText(sc)
    }
    set sc = ##class(Security.Servers).Get("1972",,.propsSuperServer)
    set propsSuperServer("Enabled") = 1
    set propsSuperServer("SSLSupportLevel") = 1
    set propsSuperServer("SSLConfig") = "%SuperServer"
    set sc = ##class(Security.Servers).Modify("1972",,.propsSuperServer)

    If (sc'=1) {
        Write !, "WARNING: Modifying the system's SSLSuperServer property failed!"
        Write !, $system.Status.GetErrorText(sc)    
    }
    Write !, "Done enabling SSL for the SuperServer"
}

Plus en détail, ce sera l'extrait de code qui activera SSL pour 1972 :

set sc = ##class(Security.Servers).Get("1972",,.propsSuperServer)
    set propsSuperServer("Enabled") = 1
    set propsSuperServer("SSLSupportLevel") = 1
    set propsSuperServer("SSLConfig") = "%SuperServer"
    set sc = ##class(Security.Servers).Modify("1972",,.propsSuperServer)

J'espère que vous le trouverez utile !

Discussion (0)1
Log in or sign up to continue
Question
· Dec 5, 2024

Problema de configuración Apache Server

Esta pregunta apareció originalmente en los comentarios del post: Cómo instalar Apache en sistemas operativos compatibles con IRIS
 

Buenas

Primero que nada saludos, hace tiempo que no nos vemos...

Estoy instalando Iris 2024.3 sobre un Iris 2023.1, en un servidor Windows Server, con la novedad que se elimina el private web server.

De entrada ya no se detecta que el servidor Apache 2.4 en el upgrade a 2024.3, pero se puede continuar con la instalación.

Al acabar mi aplicativo cliente funciona correctamente con la configuraciones existentes en Apache y el WebS erver, pero la carga del Portal de Control no funciona correctamente, se carga pero a medias, sin las imágenes y después de validarte la pantalla del Portal de Gestión esta vacía, solo se ve parte de las cabeceras y nada más

Alguna pista para solucionar el problema, no encuentro documentación para el Apache para windows server

saludos

2 Comments
Discussion (2)2
Log in or sign up to continue
Question
· Dec 5, 2024

Issue while compiling code with "cuk" qualifiers on VSC

I'm experiencing an issue while compiling code in Visual Studio Code with "cuk" qualifiers.

When I try to compile, the following message appears after a while:

In VSC, the "cuk" qualifiers are always used as default and the following message is shown in the Output panel of VSC when a compilation is successful:

I'm unsure if it is possible to replace the cuk qualifiers with something else.

The issue doesn't occur when compiling the same class in InterSystems Studio, where, in this case, the qualifiers "cuk /checkuptodate=expandedonly" are used as default:

What can I do to solve the issue in Visual Studio Code? 

8 Comments
Discussion (8)3
Log in or sign up to continue