Pesquisar

Resumo
· Dez. 5, 2024

Participate in the InterSystems "Bringing Ideas to Reality" Contest

Dear Community member,

We'd like to invite you to join our next contest dedicated to creating useful tools to make your fellow developers' lives easier: 

🏆 Bringing Ideas to Reality Contest 🏆

Submit an application that implements an idea from the InterSystems Ideas Portal that has statuses Community Opportunity or Future Consideration.

Duration: December 2 - 22, 2024

Prize pool: $14,000

Don't miss this amazing chance to challenge yourself, work alongside other developers, and earn fantastic prizes. Spread the word and invite your friends and colleagues to take part as well!

We’re excited to see your innovative solutions!

>> Full contest details here.

We're looking forward to your entries 😉

Pergunta
· Dez. 5, 2024

Creating an Operation to Connect to an OAuth 2.0 Server

I have created an OAuth Client and have created the credentials etc successfully.

I have tested using the curl command and have received the token back from the Server using the terminal.

I now need to create an Operation to use my client credentials to connect to the Server and receive the token back.

What adapter would I use as I am unable to link my client credentials and secret  - currently  I am using the EnsLib.HTTP.OutboundAdapter
 but I am not sure if this is the correct.

2 Comments
Discussão (2)1
Entre ou crie uma conta para continuar
Pergunta
· Dez. 5, 2024

JSON Structure Parsing Issue

Hello All,

I am facing an issue where the vendor seems to be sending two structures of JSON messages, but only one of them seems to work in my code.
I need help in allowing both the JSON structures to parse into the engine.

Working Example:

{
    "data":
        {
            "idNumbers":
            [
                {
                    "type":"322","number":"123456"
                }
            ]
            ,"0":
            {
                "con_type":"210"
            }
        }
    ,"meta":
    {
        "secret_key":"","origin_url":"url.co.uk"
    }
}

Not Working:

Context: Extra Square Brackets causing extra arrays and con type sent inside the same array.
Error: Error in the Json/HL7 conversion/transformation block, Origin URL not authorized!
{
    "data":
    [
        {
            "idNumbers":
                [
                    {
                        "type":"322","number":"123456","id":"4155"
                    }
                ]
        },
        {
            "con_type":"210"
        }
    ],
    "meta":
    {
        "secret_key":"","origin_url":"url.co.uk"
    }
}

 

My current code:

<assign name="Valid URL" property="context.ValidOriginUrl" value="##class(Ens.Util.FunctionSet).Lookup(&quot;CUH.DCIQToEpic.OriginUrl&quot;,$NAMESPACE,&quot;&quot;,3)" action="set" xpos='200' ypos='450' >
</assign>
<assign name="Valid ContactType" property="context.ValidContactType" value="##class(Ens.Util.FunctionSet).Lookup(&quot;CUH.DCIQToEpic.ContactType&quot;,$NAMESPACE,&quot;&quot;,3)" action="set" xpos='200' ypos='550' >
</assign>
<assign name="Valid IDNumberType" property="context.ValidIDNumberType" value="##class(Ens.Util.FunctionSet).Lookup(&quot;CUH.DCIQToEpic.IDNumberType&quot;,$NAMESPACE,&quot;&quot;,3)" action="set" xpos='200' ypos='650' >
</assign>
<if name='Check OriginUrl' condition='context.JsonObjectIn.meta."origin_url"=context.ValidOriginUrl' xpos='200' ypos='850' xend='200' yend='2250' >
<true>
<if name='Check Contact Type' condition='(context.JsonObjectIn.data."0"."con_type"=context.ValidContactType)||(context.JsonObjectIn.data."con_type"=context.ValidContactType)' xpos='470' ypos='1000' xend='470' yend='2150' >
<true>
<if name='Check idNumber Type' condition='(context.JsonObjectIn.data.idNumbers.GetAt(1).type)=context.ValidIDNumberType' xpos='740' ypos='1150' xend='740' yend='2050' >
<true>

I need help/suggestions in getting the code modified to accept both the JSON structures.

6 Comments
Discussão (6)1
Entre ou crie uma conta para continuar
Artigo
· Dez. 5, 2024 3min de leitura

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
Discussão (11)3
Entre ou crie uma conta para continuar
Artigo
· Dez. 5, 2024 4min de leitura

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.

Discussão (0)1
Entre ou crie uma conta para continuar