Estimados, junto con saludar les comento que estoy realizando una aplicación en PHP que se tiene que conectar por OBDC a una base de datos cache de InterSystems, pero los enlaces de descarga del driver odbc cache que he encontrado en el foro ya no funcionan, alguien me podria decir de donde descargarlos , estoy siguiendo la siguiente documentacion: https://docs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=BGOD_…
de ante mano muchas gracias.
¡Hola, desarrolladores!
Como sabeis, los errores de la aplicación están en el global ^ERRORS. Aparecen si los llamas:
d e.Log() en la sección Catch de Try-Catch.
Con la propuesta de @Robert Cemper, ahora se puede utilizar SQL para examinarlo.
Inspirado por el módulo de Robert, presenté un módulo simple de IRIS Analytics que muestra estos errores en un dashboard:

¡Hola desarrolladores!
Os queríamos dar las gracias por formar parte de la Comunidad de InterSystems en español. ¡Ya hay más de 300 usuarios registrados en ella!
Día a día, trabajamos para hacerla aún mejor y más útil para todos. Pero nos gustaría saber cómo lo estamos haciendo, y para eso necesitamos conocer vuestra opinión.
Por ello, hemos preparado una breve encuesta para saber qué pensáis de la Comunidad en español, si os resulta útil y qué podríamos mejorar.
👉🏼 Encuesta sobre la Comunidad de Desarrolladores en español 👈🏼
Si os habéis pasado de Studio a VSCode recientemente tal vez os hayáis dado cuenta de que en el Explorador faltan algunos elementos.
Por ejemplo, cuando se crea una API REST a partir de sus especificaciones, se generan 3 clases: , y , sin embargo la clase no se muestra por defecto en el Explorador.
Como la clase es una clase generada, para mostrarla tendremos que activar la opción correspondiente haciendo click en en el Explorador:
.png)
En ese mismo lugar también encontraremos una opción para mostrar los elementos de sistema.
¡Hola desarrolladores!
Hay un nuevo reto en Global Masters (GM), disponible para los miembros con el nivel "Advocate" o superior: graba un vídeo de 30-60 segundos, con la respuesta a esta pregunta:
➥ ¿Cuál es el valor de InterSystems IRIS para ti?
🎁 Premio: a elegir entre una tarjeta regalo de $50 (VISA/Amazon) o 12 000 puntos en GM!
En este enlace al reto tenéis toda la información.
Nota.- el enlace solo funciona para los miembros de Global Masters con nivel "Advocate" o superior.
¿No sabes en qué nivel de Global Masters estás? Descubre todos los niveles en esta publicación.
¡Hola Comunidad!
El plazo para participar en el Gran Premio para Desarrolladores de InterSystems ya ha terminado y empieza la fase de votación.
Hemos recibido 42 aplicaciones, así que ya puedes elegir la mejor solución desarrollada usando InterSystems IRIS. ¡Va a estar reñida la competición!
¿Cómo se vota?
¡Hola Comunidad!
En esta publicación, os mostramos los distintos Niveles de la Comunidad de Desarrolladores y de Global Masters, el Programa de Fidelización de InterSystems.
Todos los miembros de Global Masters pueden conseguir diferentes niveles, dependiendo de su participación en la Comunidad de Desarrolladores y de su actividad en Global Masters.
Cada nuevo nivel abre nuevos tipos de retos/tareas y nuevos tipos de premios.
Para subir de nivel, se deben ganar un número de insignias del siguiente nivel. Las insignias se ganan por completar distintos retos en Global Masters.
Ahora hay 6 Niveles:
Os traemos un resumen de todo: lo más visto, lo más comentado, lo más votado...
Echadle un vistazo y no os quedéis con ganas de aprender
Hola a todos,
Tengo una operación de API que llama a un proceso externo. La respuesta es un gran json, pero solo quiero una parte del contenido completo.
Mi primer intento es:
.....
// Se omite el código de preparación de la solicitud.
establecer tSC = ..Adapter.SendFormDataArray (.tHttpResponse, "POST", tHttpRequest ,,, tURL)
si $$$ ISERR (tSC) $$$ ThrowStatus (tSC)
// Obtén la respuesta directamente
establecer respuesta = ""
while (tHttpResponse.Data.AtEnd = 0) {
establecer respuesta = respuesta_tHttpResponse.Data.Read ()
}
¡Hola Comunidad!
Hace unas semanas os mostramos una demo de PEX (Production Extension Framework) en InterSystems IRIS, que utiliza una integración con Kafka como ejemplo. Ahora, os traemos el mismo vídeo, pero con subtítulos en español, para una mejor comprensión para toda la Comunidad hispanohablante:
Nota (junio de 2019): han cambiado muchas cosas para obtener los detalles más recientes, haz clic aquí Nota (septiembre de 2018): ha habido grandes cambios desde que esta publicación apareció por primera vez; sugiero que utilices la versión del contenedor en Docker dado que el proyecto y la información para que se ejecute como un contenedor sigue publicada en GitHub, en el mismo lugar, para que puedas descargarlo, ejecutarlo y modificarlo, si lo necesitas.
Cuando trabajo con clientes en revisiones de rendimiento, planificaciones de capacidad y resolución de problemas, con frecuencia tengo que descomprimir y revisar las métricas del sistema operativo y de caché desde pButtons. En vez de lidiar con los archivos html para cortar y pegar secciones que serán graficadas en Excel, hace algún tiempo escribí una publicación sobre una herramienta para descomprimir las métricas de pButtons, escrita con el intérprete de unix, perl y los scripts de awk. Si bien este es un valioso ahorro de tiempo, no es la historia completa…
¡Hola desarroladores!
Os traemos el noveno episodio de Data Points, el podcast de InterSystems en inglés.
Es la segunda parte de la entrevista con @Russell.Leftwich. En ella, @Adam.Coppola6950charla con Russ sobre algunas de las tecnologías de InterSystems que desempeñan un papel en los conceptos comentados en la parte 1 y también comentan las aplicaciones más modernas de FHIR.
Tras la entrevista con Russ, se une a la charla @Jenny Ames, para hablar sobre los FHIR Dev Days, el evento sobre FHIR más importante del mundo. ¡Dadle al play!
¡Hola desarrolladores!
Ya está lista la edición especial del concurso para crear soluciones de código abierto utilizando InterSystems IRIS.
🏆 Gran Premio del Concurso de Programación de InterSystems🏆
Estará activo durante cuatro semanas: del 8 de febrero al 7 de marzo de 2021.
Total en premios: $16,000

.png)
In 2017, Forbes publicó un artículo en el que hablaba sobre la "Economía de las APIs": https://www.forbes.com/sites/louiscolumbus/2017/01/29/2017-is-quickly-becoming-the-year-of-the-api-economy/.
Ese artículo fue el detonante que popularizó el uso de las APIs y la Gestión de APIs por las grandes compañías. En el artículo, se mostraba un Modelo de Madurez. Yo creo que Intersystems IRIS permite alcanzar la cima de la pirámide con tus tecnologías actuales. Mira la figura arriba. Por ello, es importante combinar el paquete % CSP.
¡Hola Comunidad!
Una función útil de nuestra estructura REST es la capacidad que tienen las clases de Dispatch para identificar los prefijos de una solicitud y redireccionarlos a otra clase de Dispatch. Este enfoque permite mejorar el orden y la lectura del código, permite mantener separadas las versiones de una interfaz fácilmente y ofrece una forma de proteger llamadas a APIs a las que solo ciertos usuarios podrán acceder.
Hola a todos! Os comparto hoy un artículo sobre la utilización del procesamiento de lenguaje natural y su combinación con FHIR donde se muestra un chatbot que interactúa con FHIR desarrollado por Renato Banzai.
¿Qué significa PLN?
PLN significa Procesamiento del Lenguaje Natural (NLP en inglés) y es un campo de la Inteligencia Artificial muy complejo que utiliza técnicas para, en pocas palabras, “entender de qué se está hablando”.
¿Y qué es FHIR?
Si está buscando una forma ingeniosa para integrar su solución de IRIS en el ecosistema de Amazon Web Services, en una aplicación sin servidor o en Boto3 (un potente script de Python), usar la API nativa de IRIS para Python podría ser el camino a seguir. No es necesario que invierta demasiado tiempo en la implementación de una producción hasta que deba acercarse y obtener algo o establecer algo en IRIS para hacer que su aplicación ejecute su característica más sobresaliente, así que esperamos este artículo sea útil y desarrolle algo aunque solamente usted pueda usarlo, ya que eso también es importante.

Hola a todos!
Comparto una pequeña utilidad (servicio REST) para descargar mensajes de una producción de interoperabilidad como ficheros.
Sólo necesitas:
- Crear una aplicación web en el Portal de Gestión (e.g.
/downloadmsg) que tenga configuradoDispatchClass=Util.DownloadMsg. - Llamar a la utilidad pasándole el namespace y el identificador de cabecera del mensaje a descargar. http://localhost:52773/downloadmsg/ns/dev/msgid/17441
///
/// Util to download messages given a message header id
///
/// Setup:
/// 1. Create a webapplication (e.g. /downloadmsg) and set DispatchClass=Util.DownloadMsg
/// 2. Go to http://localhost:52773/downloadmsg/ns/user/msgid/19 to download the message reference by header 19
Class Util.DownloadMsg Extends %CSP.REST
{
XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
<Route Url="/ns/:ns/msgid/:msgId" Method="GET" Call="DownloadMessage"/>
</Routes>
}
/// Download a message given a Ens.MessageHeader id
ClassMethod DownloadMessage(ns As %String, msgId As %String = "") As %Status
{
set ret = $$$OK
set currentNs = $namespace
try {
set $namespace = ns
$$$ThrowOnError(..ExportMsgToStream(msgId, .stream, .filename))
// set headers to download stream as filename
do %response.SetHeader("Content-Type", "application/octet-stream")
do %response.SetHeader("Content-Disposition", "attachment; filename="""_filename_"""")
do %response.SetHeader("Content-Length", stream.Size)
do stream.Rewind()
do stream.OutputToDevice()
} catch ex {
set ret = ex.AsStatus()
}
// restore namespace
set $namespace = currentNs
quit ret
}
/// Export a message to stream given a Ens.MessageHeader id
ClassMethod ExportMsgToStream(msgId As %String, Output stream As %Stream.Object, Output filename As %String) As %Status
{
set ret = $$$OK
try {
// stream
set stream = ##class(%Stream.GlobalCharacter).%New()
set filename = ""
// message header
set headerObj = ##class(Ens.MessageHeader).%OpenId(msgId,,.sc)
$$$ThrowOnError(sc)
// message body
set obj = $classmethod(headerObj.MessageBodyClassName, "%OpenId", headerObj.MessageBodyId)
set classname = $classname(obj)
// output to stream
if classname="EnsLib.HL7.Message" {
set sc = $method(obj, "OutputToLibraryStream", .stream)
$$$ThrowOnError(sc)
set filename = msgId_".hl7"
}
else {
set writer = ##class(%XML.Writer).%New()
set writer.Indent=1
set writer.NoXMLDeclaration=1
$$$ThrowOnError(writer.OutputToStream(.stream))
$$$ThrowOnError(writer.RootObject(obj))
set filename = msgId_".xml"
}
} catch ex {
set ret = ex.AsStatus()
}
quit ret
}
}
Se acaba de liberar la versión 1.5 del InterSystems API Manager (IAM)
El contenedor para IAM, incluyendo todo lo necesario para actualizar desde versiones anteriores de AIM, puede descargarse desde la Página de distribución de software del Centro de Soporte Internacional (WRC) en el área de Components.
El número de compilación de esta versión es IAM 1.5.0.9-4.
A la Comunidad,
He descargado e instalado Interystems Iris desde Docker Hub, en un MAC que no es mi sistema habitual, yo utilizo habitualmente Windows.
Yo soy nativo de MUMPS, por ello mi primera dificultad para seguir utilizando IRIS es poder utilizar un TERMINAL más potente (por ejemplo, Wrq Reflection), u otro de licencia libre. Es posible?
Para migrar mis Rutinas y Globales solo existe el camino de ^%RO-->%RI y %GO-->%GI, dado que vienen de Cache 5.2
En mis preguntas anteriores ya he comentado que en mi situación de jubilado mis inquietudes son meramente personales.
Gracias
Hola de nuevo a todos!
Cuando hacemos una instalación por defecto de VS Code, nos podemos encontrar que al crear un nuevo archivo, el lenguaje que tiene cargado por defecto es "Plain Text":
.png)
Debemos hacer click ahí para cambiar el lenguaje cargado para el archivo.
Por suerte, hay una configuración del VS Code que podemos utilizar para ajustar este comportamiento, se llama files.defaultLanguage.
Aquí podemos indicar el ID del lenguaje que queramos o incluso podemos configurarlo para que utilice el mismo lenguaje que tenemos cargado en el contexto en el que estamos trabajando actualmente:
"files.defaultLanguage": "${activeEditorLanguage}"
11 de febrero, 2021 – Aviso: Resultados de búsqueda incompletos con ‘ORDER BY <row ID field> DESC’
InterSystems ha corregido un fallo que puede producir resultados de búsquedas incompletos. Este fallo afecta a:
- InterSystems IRIS e InterSystems IRIS for Health 2019.1.0, 2019.1.1, 2019.2, 2019.3, 2019.4, 2020.1.0, 2020.2 y 2020.3
- HealthShare Health Connect 2019.1.0, 2019.1.1, 2020.1.0
- HealthShare Products 2019.2, 2020.1 and 2020.2
(En HealthShare y HealthShare Health Connect, este fallo solo afecta a Personal Community con 64000 proxies de paciente y posiblemente a consultas personalizadas
11 de febrero, 2021 – Aviso: Resultados de búsqueda incompletos con ‘ORDER BY <row ID field> DESC’ – HealthShare
InterSystems ha corregido un fallo que puede producir resultados de búsqueda incompletos. Este fallo afecta a las plataformas que son la base de HealthShare y HealthShare Health Connect:
- InterSystems IRIS e InterSystems IRIS for Health 2019.1.0, 2019.1.1 y 2020.1.0 ( Ve a Alert: Incomplete Query Results with ‘ORDER BY <row ID field> DESC’ para obtener más detalles.
Ya hace algunos meses que publicamos cómo realizar un análisis automatizado de los proyectos en Github en vuestro propio servidor de análisis de código.
Ahora ofrecemos la posibilidad de realizar el análisis automatizado de forma totalmente gratuita para los proyecto de código abierto que residen en Github. Si tienes un proyecto en Github, lo único que tienes que hacer es crear el archivo ".github/workflows/objectscript-quality.
He recogido unos datos sobre los ocho primeros concursos para desarrolladores de InterSystems, realizados en 2020:
- 64 aplicaciones (17% de ellas, apps actuales en Open Exchange - 377 apps en dic 2020)
- 08 concursos
- 29 desarrolladores
Resumen:
| Concurso | Apps ganadoras | Total Apps | Beneficios para la Comunidad |
| InterSystems IRIS, Docker y ObjectScript | BlocksExplorer, ISC DEV, sql-builder, isc-generate-db, declarative-objectscript | 20 | Nuevas utilidades de código abierto para mantener y desarrollar SQL y administrar Caché e IRIS |
| InterSystems IRIS con REST API |
Querido desarrollador,
¡tenemos muy buenas noticias! Estamos encantados de invitarte a unirte a nuestra competición anual para crear soluciones open-source utilizando InterSystems IRIS.
Demos la bienvenida a:
🏆 InterSystems Grand Prix Programming Contest 🏆
Duración: February 8 - March 8, 2021
Dotación en Premios: $16,000

Hola a todos,
Compartimos hoy un truco que quizá le resulte útil a aquellos que tienen que trabajar con JavaScript embebido.
Si tienes que trabajar con CSP o Zen probablemente más de una vez has necesitado utilizar JavaScript embebido. Supón que tienes que programar algunos bucles, que utilizan los caracteres <` o `> en alguna expresión, por ejemplo:
&js<
var test = document.getElementById('seTest');
for (var i = 0; i < test.options.length; i++) {
// hacer algo con test.options[i]...
}
>
La pandemia que afectó al mundo en 2020 hizo a todo el mundo seguir las noticias y los datos relacionados con la COVID-19. ¿Por qué no aprovechar la oportunidad para crear algo sencillo y fácil de usar, para seguir el número de vacunaciones a nivel mundial?
Para afrontar este reto, estoy usando los datos proporcionados por Our World in Data- Investigación y datos para progresar antes los mayores problemas del mundo. Han dedicado un repositorio en GitHub con los datos de la COVID-19, y he tomado los datos de vacunación para ayudarme con mi rastreador.
Hay tres aspectos muy importantes en cualquier conversación sobre el rendimiento de SQL: los Índices, el TuneTable, y el Plan de ejecución. En los PDFs adjuntos a este artículo se incluyen presentaciones antiguas sobre estos temas. En los enlaces a nuestra documentación debajo, se ofrece más información sobre estos y otros asuntos relacionados con el rendimiento de SQL. La formación online también refuerza varios de estos temas. Además, hay varios artículos de la Comunidad de Desarrolladores que están relacionados con el rendimiento de SQL y que mostramos a continuación.
Hay bastantes repeticiones en la información que se muestra a continuación. Los aspectos más importantes a considerar sobre el rendimiento de SQL son:
- Los tipos de índices que están disponibles
- Por qué utilizar un tipo de índice en lugar de otro
- La información que TuneTable recaba para crear una tabla y lo que esto significa para Optimizer
- Cómo leer un Plan de ejecución para comprender mejor si una consulta es buena o mala
¡Hola Comunidad!
¿No pudistéis ver el webinar que hicimos la semana pasada? Por si os lo perdisteis o lo queréis volver a ver, ya está disponible la grabación completa.
⏯ Webinar: Desarrolla un chatbot con Google DialogFlow, Telegram e InterSystems IRIS



