New post

Find

Article
· Apr 1 2m read

Hey chat, what's up with my Interoperability

What if you could speak in a chat to check what happens in Interoperability, is there any errors, and even solve some types of issues.

With MCP server, you can connect any of your MCP Client, for instance Claude, to IRIS, and ask to check on Interoperability

What you need is a simple configuration of Claude.

Claude settings in Developer section, can help to find a config file

With simple setting, like here, it only requires access to IRIS, nothing needs to be installed in IRIS.

{
  "mcpServers": {
    "iris": {
      "command": "uvx",
      "args": [
        "mcp-server-iris"
      ],
      "env": {
        "IRIS_HOSTNAME": "localhost",
        "IRIS_PORT": "1972",
        "IRIS_NAMESPACE": "USER",
        "IRIS_USERNAME": "_SYSTEM",
        "IRIS_PASSWORD": "SYS"
      }
    }
  }
}

After Claude restart, it should display that some MCP tools are available now, click there will display all the tools available

Claude knowing about the tools available, and by prompt you provide, can select which tool best suite to be used to help with the query.

Guess, it works fine, let's check for errors.

We are able to see the actual response from the tool. And Claude analyzed the output and extracted errors it found. Suggesting why the errors may happen. And even offers a ways to solve them.

Currently the implementation of this MCP Server does not offer any code editing capabilities, we are not going to ask to fix the code. But we can try to recover production.

Restart should help

Here we are, all good now.

Well, since our production is working fine now. Let's have a look at the data we may already collected.

To help with it, Claude will use tool which can execute SQL Query.

Even though, I put class name instead of table name, and it discovered that there is no such table, but it did not give up, and in one session, managed to find out the real name for the table, and fetch some data.

When it tries to get some more understanding in the data it collected, and tried to even guess the column names.

Found the real columns, but struggled with reserved keywords, and did not try to use "FOUND"

And with a final attempt

It decided to keep it simple, but using knowledge about column names, it got it right and gave some summary

 

At this stage, the MCP seems to be in the very beginning of its journey, but still we have quite a good tool.

If you like this tool, please vote on the current OpenExchange Contest

1 Comment
Discussion (1)1
Log in or sign up to continue
Article
· Apr 1 5m read

d[IA]gnosis: searching for similarities in our vector database and using LLM to extract diagnoses

I just realized I never finished this serie of articles!

GIF de Shame On You Meme | Tenor

In today's article, we'll take a look at the production process that extracts the ICD-10 diagnoses most similar to our text, so we can select the most appropriate option from our frontend.

Looking for diagnostic similarities:

From the screen that shows the diagnostic requests received in HL7 in our application, we can search for the ICD-10 diagnoses closest to the text entered by the professional.

To speed up the search process, we stored the vectorized text of the diagnosis received at the time of capturing the HL7 message in our database. To do this, we implemented a simple BPL that extracts the diagnosis code from the message and sends it to a method to generate the vector:

And here is the code that vectorizes the diagnosis received:

ClassMethod GetEncoding(sentence As %String) As %String [ Language = python ]
{
        import sentence_transformers
        # create the model and form the embeddings
        model = sentence_transformers.SentenceTransformer('/iris-shared/model/')
        embeddings = model.encode(sentence, normalize_embeddings=True).tolist() # Convert search phrase into a vector
        # convert the embeddings to a string
        return str(embeddings)
}

This way, we have our diagnostics vectorized, avoiding having to vectorize them again every time we need to perform a search on them. As you can see, we're using the  sentence_transformer  library to generate the vector with the downloaded model.

With all our received diagnoses vectorized and stored in our database, we will only need to execute a SELECT query to extract those ICD-10 diagnoses closest to the received diagnoses.

Let's look at the code for the method published in our web service that will return the 25 most similar diagnoses:

ClassMethod GetCodeOptions(idRequest As %String) As %Status
{
	set ret = $$$OK
    try {
        set sql = 
            "SELECT TOP 25 * FROM (SELECT C.CodeId, C.Description, VECTOR_DOT_PRODUCT(C.VectorDescription, R.VectorDescription) AS Similarity FROM ENCODER_Object.Codes C, ENCODER_Object.CodeRequests R WHERE R.ID = ?) WHERE Similarity > 0.5 ORDER BY Similarity DESC"
		set statement = ##class(%SQL.Statement).%New()
		$$$ThrowOnError(statement.%Prepare(sql))
        set rs = statement.%Execute(idRequest)

        set array = []
        while rs.%Next() {
            do array.%Push({
                    "CodeId": (rs.%Get("CodeId")),
                    "Description": (rs.%Get("Description")),
                    "Similarity": (rs.%Get("Similarity"))
                })
        }
        set %response.Status = ..#HTTP200OK
        write array.%ToJSON()

    } catch ex {
        set %response.Status = ..#HTTP400BADREQUEST
        return ex.DisplayString()
    }
    quit ret
}

If you look at the query, we're limiting the search to 25 results and only those diagnoses that exceed a similarity level of 0.5. For the similarity calculation, we chose the VECTOR_DOT_PRODUCT  method , although we could have used VECTOR_COSINE . I haven't found any substantial differences between them in this case.

Here we have the search result:

Using LLM to identify diagnosis

So far we've only done a simple search for perfectly identified diagnoses, but... Could we identify diagnoses directly from free text?

Let's try it!

For this feature, we'll use Ollama, which provides us with an API to send our questions to a LLM model of our choice. If you take a look at our docker-compose.yml file, you'll see the Ollama container declaration:

  ## llm locally installed
  ollama:
    build:
      context: .
      dockerfile: ollama/Dockerfile
    container_name: ollama
    volumes:
    - ./ollama/shared:/ollama-shared
    ports:
      - "11434:11434"

For the door, we defined in the container deployment that the LLM llama3.2 should be downloaded.  The reason? Well, it seemed to me to be the one that performed the best in my tests.

This is the content of the entrypoint.sh  file that runs when the container is deployed:

#!/bin/bash
echo "Starting Ollama server..."
ollama serve &
SERVE_PID=$!

echo "Waiting for Ollama server to be active..."
while ! ollama list | grep -q 'NAME'; do
  sleep 1
done

ollama pull llama3.2

wait $SERVE_PID

To take advantage of Ollama's capabilities, I have modified the screen that analyzes free texts to indicate that it should use the LLM to extract diagnoses from the entered text.

We have also modified the business process by adding a method that will construct the prompt needed for llama3.2  to directly extract the diagnostics:

Method AnalyzeText(text As %String, analysisId As %String, language As %String) As %String [ Language = python ]
{
    import sentence_transformers
    import iris
    import requests

    try:
        url = "http://ollama:11434/api/generate"
        data = {
            "model": "llama3.2",
            "prompt": "Extrae únicamente los diagnósticos del siguiente texto separándolos por , y sin añadir interpretaciones: "+text,
            "stream": False
        }
        response = requests.post(url, json=data)
        analyzedText = response.json()
        
        model = sentence_transformers.SentenceTransformer('/iris-shared/model/')
        phrases = analyzedText['response'].split(",")
        sqlsentence = ""
        # iris.cls("Ens.Util.Log").LogInfo("ENCODER.BP.AnalyzeTextProcess", "AnalyzeText", "Starting process")
        for phraseToAnalyze in phrases :
            if phraseToAnalyze != "":
                embedding = model.encode(phraseToAnalyze, normalize_embeddings=True).tolist()
                sqlsentence = "INSERT INTO ENCODER_Object.TextMatches (CodeId, Description, Similarity, AnalysisId, RawText) SELECT TOP 50 * FROM (SELECT CodeId, Description, VECTOR_DOT_PRODUCT(VectorDescription, TO_VECTOR('"+str(embedding)+"', DECIMAL)) AS Similarity, '"+analysisId+"', '"+phraseToAnalyze+"' FROM ENCODER_Object.Codes) ORDER BY Similarity DESC"
                stmt = iris.sql.prepare("INSERT INTO ENCODER_Object.TextMatches (CodeId, Description, Similarity, AnalysisId, RawText) SELECT TOP 50 * FROM (SELECT CodeId, Description, VECTOR_DOT_PRODUCT(VectorDescription, TO_VECTOR(?, DECIMAL)) AS Similarity, ?, ? FROM ENCODER_Object.Codes) WHERE Similarity > 0.65 ORDER BY Similarity DESC")                    
                rs = stmt.execute(str(embedding), analysisId, phraseToAnalyze)        
    except Exception as err:
        iris.cls("Ens.Util.Log").LogInfo("ENCODER.BP.AnalyzeTextProcess", "AnalyzeText", repr(err))
        return repr(err)

    return "Success"
}

The prompt is very simple; it could possibly be improved and fine-tuned as needed; I'll leave it up to you. This method will retrieve the LLM response, separated by commas, and store the vectorized diagnoses found in our database. Here's an example of the result:

In the lower right corner, you can see all the LLM findings regarding the text in the lower left corner.

Well, we'd now have an application that uses LLM models to help us code diagnoses. As you've seen, it's not at all complicated to implement and can be a good foundation for building more complex and comprehensive solutions.

Thank you very much for your time!

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

d[IA]gnosis: buscando similitudes en nuestra base de datos vectorial y usando LLM para extraer diagnósticos

¡Acabo de caer en la cuenta de que nunca terminé esta serie de artículos!

GIF de Shame On You Meme | Tenor

En el artículo de hoy vamos a echar un vistazo a la producción que se encarga de extraer los diagnósticos en CIE-10 más similares a nuestro texto, de tal forma que podamos seleccionar la opción más adecuada desde nuestro frontend.

Buscando similitudes de diagnósticos:

Desde la pantalla que nos muestra las solicitudes de diagnósticos recibidas en HL7 en nuestra aplicación podremos buscar cuales son los diagnósticos CIE-10 más próximos al texto introducido por el profesional.

Para acelerar el proceso de búsquedas hemos almacenado en nuestra base de datos el texto vectorizado del diagnóstico recibido en el momento de capturar el mensaje de HL7. Para ello hemos implementado un BPL simple que extrae el código del diagnóstico del mensaje y lo envía a un método para generar el vector:

Y aquí está el código que vectoriza el diagnóstico recibido:

ClassMethod GetEncoding(sentence As %String) As %String [ Language = python ]
{
        import sentence_transformers
        # create the model and form the embeddings
        model = sentence_transformers.SentenceTransformer('/iris-shared/model/')
        embeddings = model.encode(sentence, normalize_embeddings=True).tolist() # Convert search phrase into a vector
        # convert the embeddings to a string
        return str(embeddings)
}

De esta manera tenemos nuestros diagnósticos vectorizados, evitando tener que vectorizarlo nuevamente cada vez que tengamos que hacer una búsqueda sobre el mismo. Como podéis ver, estamos usando la librería sentence_transformer para generar el vector con el modelo descargado.

Con todos nuestros diagnósticos recibidos vectorizados y almacenados en nuestra base de datos sólo necesitaremos ejecutar una consulta de tipo SELECT para extraer aquellos diagnósticos CIE-10 más próximos a los diagnósticos recibidos.

Veamos el código del método publicado en nuestro servicio web que retornará los 25 diagnósticos más similares:

ClassMethod GetCodeOptions(idRequest As %String) As %Status
{
	set ret = $$$OK
    try {
        set sql = 
            "SELECT TOP 25 * FROM (SELECT C.CodeId, C.Description, VECTOR_DOT_PRODUCT(C.VectorDescription, R.VectorDescription) AS Similarity FROM ENCODER_Object.Codes C, ENCODER_Object.CodeRequests R WHERE R.ID = ?) WHERE Similarity > 0.5 ORDER BY Similarity DESC"

		set statement = ##class(%SQL.Statement).%New()
		$$$ThrowOnError(statement.%Prepare(sql))
        set rs = statement.%Execute(idRequest)

        set array = []
        while rs.%Next() {
            do array.%Push({
                    "CodeId": (rs.%Get("CodeId")),
                    "Description": (rs.%Get("Description")),
                    "Similarity": (rs.%Get("Similarity"))
                })
        }
        set %response.Status = ..#HTTP200OK
        write array.%ToJSON()

    } catch ex {
        set %response.Status = ..#HTTP400BADREQUEST
        return ex.DisplayString()
    }
    quit ret
}

Si veis la consulta, estamos limitando la búsqueda a 25 resultados y únicamente de aquellos diagnósticos que superen un nivel de similitud de 0.5. Para el cálculo de similitud hemos elegido el método VECTOR_DOT_PRODUCT aunque podríamos haber usado VECTOR_COSINE. Particularmente no he encontrado una diferencia sustancial entre ellos para este caso.

Aquí tenemos el resultado de la búsqueda:

Utilizando LLM para identificar diagnósticos

Hasta ahora sólo hemos hecho una búsqueda sencilla sobre diagnósticos perfectamente identificados, pero...¿Podríamos identificar diagnósticos directamente sobre texto libre?

¡Vamos a intentarlo!

Para esta funcionalidad vamos a hacer uso de Ollama que nos proporcione una API a la que enviar nuestras preguntas a un modelo LLM que elijamos. Si echáis un vistazo a nuestro docker-compose.yml veréis la declaración del contenedor de Ollama:

  ## llm locally installed
  ollama:
    build:
      context: .
      dockerfile: ollama/Dockerfile
    container_name: ollama
    volumes:
    - ./ollama/shared:/ollama-shared
    ports:
      - "11434:11434"

Para la puerta hemos definido en el despliegue del contenedor que se descargue el LLM llama3.2 ¿El motivo? Pues que me ha parecido el que mejor rendimiento me ofreció en las pruebas.

Este es el contenido del fichero entrypoint.sh que se ejecuta en el despliegue del contenedor:

#!/bin/bash

echo "Starting Ollama server..."
ollama serve &
SERVE_PID=$!

echo "Waiting for Ollama server to be active..."
while ! ollama list | grep -q 'NAME'; do
  sleep 1
done

ollama pull llama3.2

wait $SERVE_PID

Para hacer uso de las capacidades de Ollama he modificado la pantalla que nos analiza los textos libres para indicarle que debe usar el LLM para extraer los diagnósticos del texto introducido.

También hemos modificado el business process añadiendo un método que construirá el prompt necesario para que llama3.2 extraiga directamente los diagnósticos:

Method AnalyzeText(text As %String, analysisId As %String, language As %String) As %String [ Language = python ]
{
    import sentence_transformers
    import iris
    import requests

    try:
        url = "http://ollama:11434/api/generate"
        data = {
            "model": "llama3.2",
            "prompt": "Extrae únicamente los diagnósticos del siguiente texto separándolos por , y sin añadir interpretaciones: "+text,
            "stream": False
        }
        response = requests.post(url, json=data)
        analyzedText = response.json()
        
        model = sentence_transformers.SentenceTransformer('/iris-shared/model/')
        phrases = analyzedText['response'].split(",")
        sqlsentence = ""
        # iris.cls("Ens.Util.Log").LogInfo("ENCODER.BP.AnalyzeTextProcess", "AnalyzeText", "Starting process")
        for phraseToAnalyze in phrases :
            if phraseToAnalyze != "":
                embedding = model.encode(phraseToAnalyze, normalize_embeddings=True).tolist()
                sqlsentence = "INSERT INTO ENCODER_Object.TextMatches (CodeId, Description, Similarity, AnalysisId, RawText) SELECT TOP 50 * FROM (SELECT CodeId, Description, VECTOR_DOT_PRODUCT(VectorDescription, TO_VECTOR('"+str(embedding)+"', DECIMAL)) AS Similarity, '"+analysisId+"', '"+phraseToAnalyze+"' FROM ENCODER_Object.Codes) ORDER BY Similarity DESC"                    
                stmt = iris.sql.prepare("INSERT INTO ENCODER_Object.TextMatches (CodeId, Description, Similarity, AnalysisId, RawText) SELECT TOP 50 * FROM (SELECT CodeId, Description, VECTOR_DOT_PRODUCT(VectorDescription, TO_VECTOR(?, DECIMAL)) AS Similarity, ?, ? FROM ENCODER_Object.Codes) WHERE Similarity > 0.65 ORDER BY Similarity DESC")                    
                rs = stmt.execute(str(embedding), analysisId, phraseToAnalyze)        
    except Exception as err:
        iris.cls("Ens.Util.Log").LogInfo("ENCODER.BP.AnalyzeTextProcess", "AnalyzeText", repr(err))
        return repr(err)

    return "Success"
}

El prompt es muy sencillito, posiblemente se podrá mejorar y afinar lo necesario, lo dejo a vuestra voluntad. Este método lo que va a hacer es recuperar la respuesta del LLM separada por comas y almacenar los diagnósticos hallados vectorizados en nuestra base de datos. Aquí tenéis un ejemplo del resultado obtenido:

En la parte inferior derecha podéis ver todos los hallazgos del LLM sobre el texto de la parte inferior izquierda.

Pues ya tendríamos una aplicación que hace uso de modelos LLM para ayudarnos a la codificación de diagnósticos. Como habéis visto, no es para nada complicado de implementar y puede ser una buena base para construir soluciones más complejas y completas.

¡Muchas gracias por vuestro tiempo!

Discussion (0)1
Log in or sign up to continue
InterSystems Official
· Apr 1

Disponibilidad General de InterSystems IRIS, InterSystems IRIS for Health y HealthShare Health Connect 2025.1

InterSystems anuncia la disponibilidad general de InterSystems IRIS, InterSystems IRIS for Health y HealthShare Health Connect 2025.1

La versión 2025.1 de la plataforma de datos InterSystems IRIS®, InterSystems IRIS® for Health™ y HealthShare® Health Connect ya está disponible de manera general (GA). Esta es una versión de Mantenimiento Extendido (EM).

Aspectos destacados de la versión
En esta emocionante versión, los usuarios pueden esperar varias nuevas funciones y mejoras, entre ellas:

  1. Capacidades Avanzadas de Búsqueda Vectorial
    • Un nuevo índice basado en disco de Vecino Más Cercano Aproximado o Approximate Nearest Neighbor (ANN) acelera significativamente las consultas de búsqueda vectorial, proporcionando respuestas en menos de un segundo incluso con millones de vectores. Acceded al siguiente ejercicio para aprender más: Vectorización y búsqueda de texto con InterSystems SQL.  
  2. Inteligencia de Negocios Mejorada
    • Análisis automático de dependencias en la construcción y sincronización de cubos de IRIS BI, garantizando coherencia e integridad en dependencias complejas de cubos.
  3. Mejora en SQL y Gestión de Datos
    • Introducción de sintaxis estándar de paginación en SQL (LIMIT... OFFSET..., OFFSET... FETCH...).
    • Nuevo comando LOAD SQL para facilitar la importación masiva de declaraciones DDL.
    • Comandos mejorados ALTER TABLE para convertir sin problemas entre diseños de filas y columnas.
  4. Optimización de Operaciones en Bases de Datos
    • Reducción del tamaño de los registros de diario para mejorar la eficiencia.
    • Compactación de bases de datos más rápida, especialmente para bases de datos con gran cantidad de contenido en cadenas extensas.
    • Mayor automatización al agregar nuevas bases de datos a un espejo.
    • Nueva utilidad de línea de comandos para tareas de gestión de ECP.
  5. Cumplimiento de Seguridad Reforzado
    • Soporte para bibliotecas criptográficas compatibles con los estándares FIPS 140-3.
  6. Interfaz de Interoperabilidad Modernizada
    • Los usuarios pueden optar por una experiencia renovada en la Configuración de Producción y el Editor DTL, que incluye integración con control de versiones, compatibilidad con VS Code, filtrado mejorado, vistas en panel dividido y más. Consultad este artículo de la Comunidad de Desarrolladores para obtener más información sobre cómo participar y proporcionar comentarios.
  7. Capacidades Ampliadas para el Sector Salud
    • Ingesta y programación eficiente de datos FHIR en bloque, con verificaciones de integridad y gestión de recursos.
    • Acceso mejorado a datos en bloque con FHIR y optimización de operaciones de búsqueda en FHIR.
  8. Nuevas Funcionalidades para Desarrolladores
  9. Observabilidad Mejorada con OpenTelemetry
    • Introducción de capacidades de trazado en IRIS para una observabilidad detallada de solicitudes web y rendimiento de aplicaciones.

Compartid vuestros comentarios a través de la Comunidad de Desarrolladores para ayudarnos a construir un mejor producto juntos.

Documentación

Detalles sobre todas las funciones destacadas están disponibles en los siguientes enlaces

Además, consultad la lista de verificación de impacto de la actualización para obtener un resumen fácil de navegar sobre todos los cambios que debéis tener en cuenta al actualizar a esta versión.  

En particular, tened en cuenta que InterSystems IRIS 2025.1 introduce una nueva versión del formato de archivos de journal, que no es compatible con versiones anteriores. Esto impone ciertas limitaciones en configuraciones de mirror con versiones mixtas. Consultad la documentación correspondiente para más detalles.

Programas de Acceso Anticipado (EAPs)

Hay muchos EAPs disponibles en este momento. Consultad esta página y registraos en aquellos que os interesen.

Descarga del software

Como es habitual, las versiones de Mantenimiento Extendido (EM) incluyen paquetes de instalación clásicos para todas las plataformas compatibles, así como imágenes en formato de contenedor Docker.

Paquetes de Instalación Clásicos

Los paquetes de instalación están disponibles en la página de InterSystems IRIS del WRC para InterSystems IRIS e InterSystems IRIS for Health, y en la página de HealthShare del WRC para Health Connect. También podéis encontrar los kits en el sitio web de Evaluation Services.

Disponibilidad e Información de los Paquetes

Esta versión incluye paquetes de instalación clásicos para todas las plataformas compatibles, así como imágenes de contenedor en formato Docker. Para obtener una lista completa, consultad el documento de Plataformas Compatibles.

El número de compilación de esta versión de Mantenimiento Extendido es 2025.1.0.223.0.

Las imágenes de contenedor están disponibles en el Registro de Contenedores de InterSystems. Los contenedores están etiquetados como "2025.1" y "latest-em".

Discussion (0)1
Log in or sign up to continue
InterSystems Official
· Apr 1 5m read

2025.1 Modernización de la Experiencia del Usuario en Interoperabilidad

La interfaz de usuario de Interoperabilidad ahora incluye experiencias modernizadas para las aplicaciones DTL Editor y Production Configuration, las cuales están disponibles para su activación en todos los productos de interoperabilidad. Podéis alternar entre las vistas moderna y tradicional. Todas las demás pantallas de interoperabilidad permanecen en la interfaz de usuario estándar. Tenéis que tener en cuenta que los cambios se limitan a estas dos aplicaciones, y a continuación se identifica la funcionalidad que está disponible actualmente.

Para probar las nuevas pantallas antes de la actualización, podéis descargar la versión 2025.1 desde nuestra página web del kit de la comunidad aquí: https://evaluation.intersystems.com/Eval/.

Configuración de Producción - Introducción a las Tareas de Configuración
  • Configuración de Producción: Soporte en esta versión de la Configuración de Producción:
    • Creación/Edición/Copia/Eliminación de Hosts
    • Detener/Iniciar Hosts
    • Edición de Configuración de Producción
    • Detener/Iniciar Producciones
  • Integración con Control de Versiones: El soporte para la integración con control de versiones para la funcionalidad de configuración mencionada está disponible.
  • Vista de Panel Dividido: Los usuarios pueden abrir directamente el Editor de Reglas y el Editor DTL desde la pantalla de Configuración de Producción para ver y editar reglas y transformaciones incluidas en la producción en una vista de panel dividido.
  • Filtrado Mejorado: Un cuadro de búsqueda en la parte superior permite buscar y filtrar en todos los componentes de negocio, incluyendo múltiples categorías, DTLs y subtransformaciones. Usad la barra lateral izquierda para buscar independientemente del panel principal y ver los resultados de búsqueda a través de hosts y categorías.
  • Edición Masiva de Categorías de Hosts: Podéis añadir una nueva categoría o editar una existente para una producción añadiendo hosts desde la configuración de producción.
  • Routers Expandibles: Los routers pueden ser expandidos para ver todas las reglas, transformaciones y conexiones en línea.
  • Conexiones de Hosts Reformuladas: Las conexiones directas e indirectas ahora se muestran cuando se selecciona un host de negocio, permitiendo ver el camino completo que un mensaje puede tomar. Colocad el cursor sobre cualquier host de salida o entrada para diferenciar mejor las conexiones. El interruptor Mostrar solo Hosts Conectados filtrará solo los hosts seleccionados y sus conexiones.

 

 

  • Integración con Control de Versiones: El soporte para la integración con control de versiones está disponible.
  • Integración con VS Code: Los usuarios pueden ver esta versión del Editor DTL en su IDE de VS Code.
  • Soporte de Python Embebido: El soporte de Python embebido se extiende a esta versión del Editor DTL.
  • Pruebas de DTL: La utilidad de prueba DTL está disponible en esta versión del Editor DTL.
  • Cambio de Diseño del Panel: El editor DTL soporta un diseño de lado a lado y de arriba a abajo. Haced clic en el botón de diseño en la cinta superior para experimentar con esto.
  • Deshacer/Volver a Hacer: Los usuarios pueden deshacer y rehacer todas las acciones con los botones de deshacer/rehacer que aún no se han guardado en el código.
  • Generar Parámetro de Segmentos Vacíos: El parámetro GENERATEEMPTYSEGMENTS está disponible para generar segmentos vacíos para los campos faltantes.
  • Visualización de Subtransformaciones: Los usuarios pueden ver subtransformaciones haciendo clic en el ícono del ojo para abrir el DTL de la subtransformación en una nueva pestaña.
  • Desplazamiento:
    • Desplazamiento Independiente: Las secciones izquierda y derecha (origen y destino) del DTL pueden desplazarse de manera independiente colocando el cursor sobre una de las secciones y utilizando la rueda de desplazamiento o el trackpad para mover los segmentos verticalmente.
    • Desplazamiento Conjunto: Ambas secciones, origen y destino, pueden desplazarse juntas colocando el cursor en el medio del diagrama.
  • Autocompletado de Campos: El autocompletado está disponible para los campos: 'origen', 'destino' y 'condición', así como para la Clase de Origen, Tipo de Documento de Origen, Clase de Destino y Tipo de Documento de Destino.
  • Numeración Ordinal: El editor visual permite activar y desactivar la visualización de los números ordinales y la expresión del camino completo para cada segmento.
  • Referencias Fáciles: Cuando un campo en el Editor de Acción está enfocado, al hacer doble clic en un segmento en el Editor Gráfico se inserta la referencia del segmento correspondiente en la posición actual del cursor en el Editor de Acción.
  • Sincronización: Al hacer clic en un elemento en el editor visual, se resalta la fila correspondiente en el editor de acción.

 

📣 LLAMADA A LA ACCIÓN 📣

Si tenéis comentarios, por favor proporcionadlos a través de los siguientes canales:

  • Nuevas Características en toda la Interoperabilidad: Introducid una idea en el portal de ideas o participad en otras ideas en el Portal de Ideas de InterSystems. Para nuevas ideas, añadid la etiqueta "Interoperabilidad" en vuestro post o votad positivamente por las características ya propuestas en la lista.
  • 💻 Comentarios Generales sobre la Experiencia del Usuario en toda la Interoperabilidad: Comentad vuestros comentarios o participad en otros comentarios a continuación.
  • 🗒 Sugerencias/Comentarios sobre Aplicaciones Modernizadas (como se describe arriba): Comentad vuestros comentarios o participad en otros comentarios a continuación.

¡Considerad completar la oportunidad de Global Master's para interactuar con el equipo en una sesión de retroalimentación guiada privada y ganar puntos! ¡Inscribíos en estas sesiones a través de Global Masters >> aquí!

Si queréis proporcionar comentarios adicionales de manera privada, por favor enviad vuestros pensamientos o preguntas a: ux@intersystems.com.

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