#Caché

5 Seguidores · 377 Publicaciones

  

InterSystems Caché es un multi-modelo de DBMS y la aplicación server. See más detalles aquí.

Documentación.

Descargar Evaluación de Caché.

Artículo Vachan C Rannore · ene 22 1m read

SETasigna un valor a la variable en TIEMPO DE EJECUCIÓN.

#DIM declara la variable y su tipo de datos en TIEMPO DE COMPILACIÓN.

SET #DIM

Hace que las variables sean dinámicas.

Mejora la legibilidad.

Sin declaración de tipo de datos.

Permite la autocompletación en el IDE.

Tiempo de ejecución

Útil para referencias a objetos.

#DIM name As%StringSet name = "Micheal Scott"#DIM age As%NumericSet age = 36#DIM employer As App.Employer               ; compile timeSet employer = ##class(App.Employer).%New() ; runtime 

 

SET#DIM? Vuestro diseño, vuestras reglas.

0
0 29
Artículo Jose-Tomas Salvador · ene 19 2m read

Enviáis una petición HTTP y recibís un error HTTP, pero con una página de error HTML que no esperabais… ¿qué está pasando? 🤔

Por ejemplo, puede que hayáis intentado LEER un recurso FHIR (por ejemplo, /Patient/123) y recibáis una página de error 404, aunque con otros IDs de Patient sí obtenéis la carga útil del recurso. Es decir, “la página” definitivamente existe… ¿por qué os está devolviendo una página de error 404? 🙄

0
0 33
Artículo Luis Angel Pérez Ramos · ene 13 3m read

Probablemente os suene esta situación:

Hace tiempo encontraste una función muy especial, $ZU, para un tipo de problema muy concreto. Como una especie de fórmula mística. Esta se popularizó y muchos desarrolladores la utilizaron en su código.

Tras varias versiones y actualizaciones, ISC informa de que vuestro mágico $ZU está obsoleto y ya no es soportado. Se os recomienda reemplazarlo por un nuevo $loquesea().

Entonces, ¿cómo podrías localizar y documentar el uso de este mágico $ZU? Puede estar en clases, en código MAC, INT o INC o incluso distribuido en múltiples namespaces.

0
0 34
Artículo Ricardo Paiva · dic 3, 2025 2m read

Rúbrica de preguntas frecuentes de InterSystems

Al exportar usando el método Export() de la clase %Library.Global, si el formato de exportación (cuarto argumento: OutputFormat) está establecido en 7, “Block format/Caché block format (%GOF)”, no se pueden exportar globals mapeadas (solo se exportan las globals de la base de datos global predeterminada del espacio de nombres). Para exportar globals mapeadas en “Block format/Caché block format (%GOF)”, especificad el directorio de la base de datos a la que queréis mapearlas en el primer parámetro de %Library.Global.Export().

0
0 48
Artículo Jose-Tomas Salvador · nov 20, 2025 4m read

Como desarrollador que usa IRIS como base de datos en un par de proyectos, uso APIs REST todo el tiempo. En mi opinión, saber cómo consumir un recurso de una API REST es crucial para poder utilizar APIs REST externas con %Net.HttpRequest, porque permite la integración con aplicaciones y servicios web modernos, y es una habilidad esencial para un desarrollador backend que ama y utiliza IRIS como base de datos.

¿Qué es y para quién sirve %Net.HttpRequest?

0
0 41
Artículo Ricardo Paiva · nov 18, 2025 3m read

En mi artículo anterior en el que presentaba gj :: configExplorer señalé cómo un aparente error en los elementos de Windows de la API nativa para Node.js hace que actualmente no sea posible ejecutarlo en VS Code en un escritorio Windows. En un comentario a ese artículo ofrecí una solución alternativa, pero esta requiere un host Linux con Docker al que podáis conectaros por SSH.

Si no tenéis un destino adecuado, ahora es posible aprovechar vuestro Docker Desktop local de Windows. Aquí os explico cómo:

  1. Abrid una nueva ventana de VS Code.
0
0 42
Pregunta Jaume Marcet · nov 5, 2025

Tengo el siguiente código, con el que pretendo enviar el fichero pepe.XML que está en mi directorio C:\TEMP:

 httprequest=##class(%Net.HttpRequest).%New()
 httprequest.Username="dfgsdgsd"
 httprequest.Password="sdfbnnb"
 httprequest.Port=2222
 httprequest.Server="https://app.net
 httprequest.SetParam("API-Key","jh2871371naou1b82397"
 httprequest.SetParam("content-type", "application/xml"
 httprequest.Post("C:\TEMP\pepe.XML",2)
 response=httprequest.HttpResponse
 !,response
(Los datos no son reales. Supongo que Username, Password y Port no es necesario)

4
0 71
Artículo Luis Angel Pérez Ramos · oct 30, 2025 3m read

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=+HSet FromDate=+$H-1ForSet FromDate=$O(^PatientD("Date",FromDate)) Quit:FromDate>ToDate  Do
. Set PatId=""ForSet 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.
0
0 48
Artículo Ricardo Paiva · oct 8, 2025 1m read

gj :: configExplorer es una nueva extensión de VS Code que se integra con Server Manager y aprovecha Structurizr para generar diagramas de configuración de vuestros servidores.

Aquí tenéis un breve video introductorio.

0
0 63
Artículo Vachan C Rannore · oct 2, 2025 3m read

Empezar con ObjectScript es realmente emocionante, pero también puede resultar un poco extraño si estáis acostumbrados a otros lenguajes. Muchos principiantes tropiezan con los mismos obstáculos, así que aquí tenéis algunas "trampas” a las que debéis prestar atención. (Y también algunos consejos para evitarlas)

PONER NOMBRES AL AZAR

Todos hemos caído en la tentación de llamar a algo Test1 o MyClass solo para avanzar rápido. Pero una vez que vuestro proyecto crece, esos nombres se convierten en una pesadilla.

0
0 55
Artículo Ricardo Paiva · sep 29, 2025 3m read

Todavía recuerdo el primer código que escribí en Object Script

Viniendo de Python, al principio me resultó muy extraño, pero con el tiempo empecé a ver por qué el lenguaje está construido de esa manera.

Si estáis empezando, tened en cuenta que ObjectScript puede parecer un poco de nicho y ligado sobre todo a los productos IRIS, pero la forma de trabajar con él realmente compensa: desarrollo rápido, una base de datos potente y una plataforma sólida para aprender.

A veces se siente como si hubierais entrado en un mundo que es a la vez familiar y diferente.

0
0 28
Artículo Ricardo Paiva · sep 1, 2025 3m read

Al comenzar con InterSystems IRIS o Caché, los desarrolladores a menudo se encuentran con tres conceptos fundamentales: Dynamic Objects, Globals y Relational Table. Cada uno tiene su papel en la construcción de soluciones escalables y mantenibles. En este artículo recorreremos ejemplos prácticos de código, destacaremos buenas prácticas y mostraremos cómo estos conceptos se relacionan entre sí.

1. Trabajando con Dynamic Objects:

0
0 68
Artículo Luis Angel Pérez Ramos · ago 21, 2025 3m read

ObjectScript puede parecer solo otro lenguaje de programación, pero aquí está el giro:

Vuestro código aquí puede vivir para siempre (sí, incluso después de que os hayáis pasado a otro proyecto). Por eso es importante mantenerlo ordenado, fácil de leer y a salvo de errores misteriosos.

(Una guía para principiantes para mantener vuestro código ordenado, amigable y preparado para el futuro)

Bienvenidos a la jungla de ObjectScript, donde vuestro código puede tener un alcance global y ser persistente por naturaleza.
Mantengamos las cosas limpias, legibles y resistentes a errores.

0
0 66
Artículo Ricardo Paiva · ago 7, 2025 1m read

Aquí tenéis un ejemplo práctico de cómo importar datos desde un archivo CSV a InterSystems CACHÉ utilizando ObjectScript.
Suponiendo que vuestro archivo CSV sea simple (por ejemplo, separado por comas y con encabezados), podéis usar `%Stream.FileCharacter` para leerlo línea por línea y analizar los datos.
 

ClassMethod ImportCSV(filePath As %String) As %Status {
    Set stream = ##class(%Stream.FileCharacter).%New()
    Set sc = stream.LinkToFile(filePath)
    If 'sc Quit sc

0
0 38
Artículo Harshitha · ago 5, 2025 2m read

Trabajar en TI para el sector salud como un desarrollador joven, especialmente en InterSystems TrakCare, te hace darte cuenta rápidamente de una cosa: no se trata solo de mensajes HL7 o integraciones backend. Una gran parte de lograr que TrakCare funcione sin problemas en los hospitales depende de cómo se configura, personaliza y da soporte desde el lado de la aplicación.

Ahí es donde entramos personas como yo: desarrolladores tecno-funcionales que entendemos tanto la tecnología como su impacto en los flujos de trabajo reales del hospital.

No somos solo técnicos (ni consultores funcionales)

0
0 67
Job Coral Montero · jun 20, 2025

¡Hola comunidad de InterSystems!

¡Tenemos una oportunidad increíble para 3 desarrolladores con experiencia en Caché que quieran unirse a nuestro equipo y construir una plataforma innovadora en el sector MedTech!

Lo que ofrecemos:

  • Trabajo híbrido (Barcelona o Madrid)
  • ¡Forma parte de un equipo desde sus inicios, con un impacto directo en la creación de soluciones médicas de vanguardia!
  • Gran oportunidad de crecimiento profesional

Si tienes experiencia con Caché y estás listo para un reto emocionante en una empresa con visión de futuro, ¡esta es tu oportunidad!

0
0 64
Artículo Alberto Fuentes · jun 11, 2025 3m read

Si estáis migrando de Oracle a InterSystems IRIS, como muchos de mis clientes, podríais encontraros con patrones SQL específicos de Oracle que necesitan ser traducidos.

Tomad este ejemplo:

SELECT (TO_DATE('2023-05-12','YYYY-MM-DD') - LEVEL + 1) AS gap_date
FROM dual
CONNECT BY LEVEL <= (TO_DATE('2023-05-12','YYYY-MM-DD') - TO_DATE('2023-05-02','YYYY-MM-DD') + 1);

En Oracle:

0
0 41
Artículo Luis Angel Pérez Ramos · mayo 21, 2025 2m read

Pregunta:

¿Cómo podéis crear, modificar, etc., configuraciones de seguridad como Usuarios y Roles programáticamente?

Respuesta:

Podéis usar las clases del paquete Security en el NAMESPACE %SYS. Por ejemplo Security.Roles o Security.Users.

Por supuesto, para llevar a cabo estas acciones, necesitaréis la autorización correspondiente.

Aquí tenéis un pequeño ejemplo usando Security.Roles:

0
0 51
Artículo Alberto Fuentes · abr 25, 2025 2m read

Recientemente ayudé a investigar un problema en una instalación que surgió después de que actualizaran su instancia de Caché en Windows de la versión 2015.1 a la 2017.1. Una sesión de terminal iniciada desde el icono del cubo del escritorio del servidor no podía ejecutar comandos a nivel del sistema operativo utilizando la función $ZF(-1). Por ejemplo, al tratar de lanzar  el comando "REM" (que no tiene ningún efecto) de la siguiente manera

write $zf(-1,"rem")

devolvía -1, lo que indicaba que el comando de Windows no se podía ejecutar.

0
0 80
Artículo Kurro Lopez · abr 1, 2025 1m read

Hola a todos,

Como parte del desarrollo de una API para saber a qué instancia de IRIS está conectada, he encontrado algunos métodos para obtener información sobre el servidor que pueden ser útiles.

Obtener el nombre del servidor: $SYSTEM.INetInfo.LocalHostName()

Obtener la IP del servidor: $SYSTEM.INetInfo.HostNameToAddr($SYSTEM.INetInfo.LocalHostName())

Obtener el nombre de la instancia: $PIECE($SYSTEM,":",2)

Entonces, he creado el siguiente código como clase BS:

0
0 83
InterSystems Official Jose-Tomas Salvador · abr 1, 2025 5m read

La interfaz de usuario de Interoperabilidad ahora incluye experiencias modernizadas para las aplicacionesDTL Editory 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.

0
0 64
Job Jorge Ceballos · mar 27, 2025

Buenas tardes,

Estamos abriendo posiciones para desarrolladores Intersystems para proyectos en sector Life Sciences. Escenario de transformación, donde ya tenemos otros equipos scrum y planteamiento a largo plazo y marcos de desarrollo de producto incremental.

Buscamos reforzar esta capacidad y abrir un abanico de proyectos de transformación para desarrolladores Intersystems que busquen nuevos retos futuros:

https://www.linkedin.com/jobs/view/4190849428/?capColoOverride=true

Estamos ansiosos de conoceros,
 

0
0 79
Artículo Jose-Tomas Salvador · mar 25, 2025 1m read

Rúbrica de preguntas frecuentes de InterSystems

Esto puede hacerse con TRY-CATCH:

#dim ex As%Exception.AbstractExceptionTRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

Si utilizáis ^%ETN, llamadlo desde la entrada BACK (BACK^%ETN).

Echad también un vistazo al artículo relacionado: Cómo obtener errores de aplicación (^ERRORS) utilizando un comando

0
1 54
Artículo Jinyao · mar 7, 2025 4m read

Motivación

Empecé a programar en 2015, cuando estaba haciendo la carrera de informática. No conocía ObjectScript hasta que empecé en mi nuevo trabajo hace cuatro meses. ObjectScript en realidad no es un lenguaje de programación joven. Comparado con C++, Java y Python, la comunidad no es tan activa, pero queremos hacer que este espacio sea más dinámico, ¿verdad?  

Me he dado cuenta de que a algunos de mis compañeros les cuesta entender las relaciones entre clases en estos proyectos tan enormes. No hay ninguna herramienta moderna y fácil de usar para crear diagramas de clases en ObjectScript.

0
0 167
InterSystems Official Jose-Tomas Salvador · mar 5, 2025

A partir de la versión 2025.1 de la plataforma de datos IRIS® de InterSystems, InterSystems deja oficialmente de utilizar MultiValue y lo incluye en la lista de funciones obsoletas y descatalogadas. Aunque InterSystems seguirá dando soporte a los clientes actuales que utilicen MultiValue, no se recomienda para nuevas aplicaciones.

Qué significa esto para vosotros:

0
0 57