hi, my apologises for my english and my level . //al final en castellano
first i am having problem executing in terminal with $SYSTEM.SQL.Shell() when i work with the << entering multiline statement mode >>
i ve tried this ...
InterSystems Caché es un multi-modelo de DBMS y la aplicación server. See más detalles aquí.
Descargar Evaluación de Caché.
hi, my apologises for my english and my level . //al final en castellano
first i am having problem executing in terminal with $SYSTEM.SQL.Shell() when i work with the << entering multiline statement mode >>
i ve tried this ...
Hola comunidad,
Tengo que hacer un desarrollo que deberá de conectar con un REST API externo y devuelve diferentes HttpStatus y contenido en la respuesta con la descripción del problema.
Estoy usando el siguiente código:
set tSC = ..Adapter.SendFormDataArray(.tHttpResponse,"POST",tHttpRequest,,,URL)Si la API externa respuende un estado 400 (Bad Request)
el valor de tSC es un status de error y el valor de tHttpResponse está vacio, por lo que no puedo comprobar cual es el código de estado y el contenido.
Nota: Lo que sigue es solo una guía.Cada cliente es diferente.
A través de nuestra experiencia en soporte ayudando a clientes, hemos visto muchos casos en los que no tener un plan de actualización adecuado (y documentado) conduce a problemas inesperados con prioridad de Crisis. En algunos casos, podemos solucionar el problema durante el periodo de actualización, pero no siempre, ya que algunas situaciones pueden requerir una investigación más exhaustiva que puede llevar días o incluso meses.
Hola!!!! Tengo un tablepane con una propiedad "where Clause = CAMPO > ?"
Cuando desde un ClassMethod quiero actualizar el query de ese tablePane usando "zen(tablePane).parameters[0].value = valor"
me devuelve el siguiente error:
Cannot set properties of undefined (setting 'value')
Alguna idea de qué estoy haciendo mal?
Muchas gracias!!!!!
Hace varios años, estaba enseñando los conocimientos básicos de nuestro framework %UnitTest durante la clase de Fundamentos de Caché (ahora llamada Developing Using InterSystems Objects and SQL). Un alumno preguntó si era posible recoger estadísticas de rendimiento mientras se ejecutan pruebas unitarias. Unas semanas más tarde, añadí un código adicional a los ejemplos de %UnitTest para responder a esa pregunta. Ahora lo comparto con la Comunidad.
Supongamos que has desarrollado tu propia aplicación web con las tecnologías de InterSystems y ahora quieres realizar una validación de Captcha en el lado del cliente para saber si el usuario es humano o no y hacerla más segura. Existen algunos frameworks modernos para abordar el problema de Captcha, pero la mayoría de ellos necesita acceso a Internet para generar códigos y, a veces, son complejos de implementar. Toma esto como un ejemplo básico, teniendo en cuenta que el reconocimiento de imágenes se ha vuelto demasiado bueno. Por eso hoy en día se tiende a ver más Captchas de reconocimiento
Buenos días,
Nos gustaría compartir lo que estamos investigando y en lo que necesitamos su apoyo, para continuar con ello:
1) Hemos desarrollado un Circuito REST: Servicio REST + Proceso + Operacion REST.
Los cuales reciben un fichero de estudios de imágenes médicas .dcm y lo envían tal cual. Para ello enviamos mediante el simulador dcm4che y en concreto mediante la línea:
./stowrs --disableTM --allowAnyHost --url https://[IP del ESB]:[Puerto del ESB]/aplicaciones/scs/cconcertadostest/almacenarImagen /opt/contenedor/PACS/dcm4che-5.27.0-bin/dcm4che-5.27.0/bin/shared/dicom/d1I00012.dcm
Durante una actualización a una versión principal (major) es aconsejable recompilar las clases y rutinas de todos tus namespaces (ver Tareas tras la instalación de una versión major).
do $system.OBJ.CompileAllNamespaces("u")do ##Class(%Routine).CompileAllNamespaces()
Para automatizar esta tarea de administración y mantener un registro de cualquier error, os muestro un ejemplo de una clase para importar y compilar en el namespace USER, que puedes usar después de cada actualización: admin.utils.cls
¿No te gustaría que una taza de café caliente te esperara justo al llegar a la oficina? ¡Vamos a automatizar eso!
Cache e IRIS incorporan un Administrador de tareas, que debería resultar familiar a quienes estén acostumbrados a utilizar el programador de tareas de Windows o a usar cron en Linux. Tu cuenta de usuario requerirá tener acceso al recurso %Admin_Task para utilizarlo, y puedes acceder a él desde el portal de administración en System Operation -> Task Manager. Cuando se instala por primera vez, hay aproximadamente 20 tipos de tareas que puedes programar.
Si quieres añadir tus propias tareas, empieza creando una clase que extienda %SYS.Task.Definition. Como mínimo, debes sobreescribir el método OnTask, que tiene una firma de Method OnTask() As %Status. El código de ese método se ejecutará cada vez que se lance la tarea. De hecho, si tu tarea arroja "Error #5003: No implementado (Error #5003: Not Implemented)" cada vez que se ejecuta, es porque este método no se sobreescribió correctamente. De manera muy básica, podría ser:
Hola a todos,
Acabo de actualizar la versión de WebTerminal usando el link, pero ahora no funciona.
Cuando llamas a /terminal está mostrando el siguiente error:
{
"errors":[ {
"code":5002,
"domain":"%ObjectErrors",
"error":"ERROR #5002: Error de cache: <INVALID OREF>zWrite+5^WebTerminal.StaticContent.1",
"id":"ObjectScriptError",
"params":["<INVALID OREF>zWrite+5^WebTerminal.StaticContent.1"
]
}
],
"summary":"ERROR #5002: Error de cache: <INVALID OREF>zWrite+5^WebTerminal.StaticContent.1"
}¡Hola desarrolladores!
Solo quiero compartir con vosotros mi conocimiento, es decir, experiencia en algo que os puede hacer ahorrar unas cuantas horas algún día.
Si estás creando una REST API con IRIS que contiene más de un nivel de "/", por ejemplo: '/patients/all', no te olvides de añadir el parámetro 'recurse=1' en tu script de despliegue en %Installer. Si no, todas las entradas de nivel secundario y de mayor profundidad no funcionarán. Y todas las entradas de nivel primario funcionarán.
/patients
- funcionará, pero
/patients/all
- no funcionará.
Recientemente surgió un patrón interesante en torno a los índices únicos (en una discusión interna re: isc.rest) y me gustaría destacarlo para la Comunidad.
Como caso de uso motivador: supón que tienes una clase que representa un árbol, donde cada nodo también tiene un nombre, y queremos que los nodos sean únicos por nombre y nodo principal. Queremos que cada nodo raíz también tenga un nombre único. Una implementación natural sería:
Si resuelves problemas complejos en ObjectScript, probablemente tienes mucho código que funciona con los valores de %Status. Si has interactuado con clases persistentes desde una perspectiva de objetos (%Save, %OpenId, etc.), casi seguro que las ha visto.
Un %Status proporciona una envoltura alrededor de un mensaje de error localizable en las plataformas de InterSystems. Un estado OK ($$$OK) simplemente es igual a 1, mientras que un mal estado ($$$ERROR(errorcode,arguments...)) se representa como un 0 seguido de un espacio seguido de una lista $ListBuild con información estructurada sobre el error.
¡Hola a tod@s!
Hoy os traigo un artículo de Kyle Baxter sobre búsquedas de texto libre que vale la pena guardar como referencia :)
¿Os gustaría buscar de forma eficiente campos de texto libres almacenados en vuestra aplicación? ¿Lo habéis intentado alguna vez pero no habéis encontrado una manera que os ofrezca un buen rendimiento? Hay un truco especial que resuelve el problema :)
Como es habitual, si preferís la versión TL;DR (Demasiado largo, no lo he leído), podéis ir directamente al final del artículo, pero preferiríamos que leyeseis el artículo entero para evitar herir sentimientos.
Hola buenos días,
Agradeceríamos si ustedes nos leen y responden:
Disponemos de 2 entornos: INTegracion en HealthConnect 2020 y PREproduccion en Ensemble 2018
¿Que un tipo de dato sea %GlobalCharacterStream influye? en concreto: ¿se generan ficheros .stream en el servidor si subimos clases que hagan uso de %GlobalCharacterStream?
Ojeando la documentación, parece que explica lo siguiente:
Parece que NO sería persistente , parece que "almacena caracteres en nodos de datos globales"
Buenos días,
Agradeceríamos que nos leyeran y si tuvieran oportunidad, nos respondieran, por favor.
La situación actual es la siguiente:
Disponemos de 2 entornos PREproduccion e INTegracion :
Versión de Ensemble en PREproduccion:
Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2018.1.6 (Build 717U) Thu Feb 24 2022 13:27:54 EST
Versión de la herramienta para convertir XML a ER7 y viceversa, el ITB, en PRE (la obtenemos en el fichero ITB.info.cls):
Parameter VERSION = 2.1;
Versión de Ensemble en INTegracion:
InterSystems IRIS Business Intelligence te permite mantener actualizados tus modelos analíticos o cubos de varias formas. Este artículo tratará sobre Construir/Generar vs Sincronizar. Hay maneras de actualizar manualmente los cubos, pero son casos muy especiales y casi siempre los cubos se mantienen actualizados por medio de la (Re)construcción o la sincronización.
Me encontré con un interesante caso de uso de ObjectScript con una solución general que quería compartir.
Tengo una matriz JSON (específicamente, en mi caso, una matriz de problemas de Jira) que quiero agregar en algunos campos, por ejemplo: categoría, prioridad y tipo de problema. Después quiero combinar los agregados en una lista simple con el total de cada uno de los grupos. Por supuesto, para la agregación, tiene sentido utilizar una matriz local en el formulario:
agg(category, priority, type) = total
Encontrar errores en tu código o examinar un comportamiento inesperado es el principal objetivo de la depuración.
Trataré de actualizar las herramientas tradicionales aparte de las ayudas que tienen Studio, VScode, Serenji... Las herramientas básicas que han estado ahí antes de que tu EDI preferido lo utilizara en segundo plano.
Hola, buenos días
Primero agradecer su tiempo al leer y responder nuestra cuestión.
Hemos estado leyendo, indagando, investigando respecto a cómo realizar múltiples envíos desde 1 proceso del tipo "DICOM.BP.QueryProcess" a varias operaciones destino
Actualmente estamos usando el ejemplo básico, el que incluye Ensemble, y este dispone de una propiedad mediante la cual desde la producción escribimos a qué operación envía nuestro proceso:
Viéndose gráficamente el circuito:
Siendo en el código la propiedad una String sencilla:
Es decir, el código es:
Hay varias maneras de generar ficheros Excel usando tecnología InterSystems: por ejemplo utilizando informes generados con InterSystems Reports, o los antiguos informes ZEN, o incluso haciendo uso de librerías Java de terceros. Las posibilidades son casi infinitas.
Pero, ¿qué pasa si quieres crear una sencilla hoja de cálculo sólo con ObjectScript? (sin aplicaciones de terceros)
Buenos días,
Agradecer a ustedes el tiempo dedicado en leer y responder a esta duda
Necesitamos indagar la forma de mostrar un EnsLib.DICOM.Document mediante LOGINFO, en las trazas
Hemos tratado de emplear:
set writer=##class(%XML.Writer).%New()
set status=writer.OutputToString()
set status=writer.RootObject(..DocumentFromService)
set xml= writer.GetXMLString()
$$$LOGINFO("..DocumentFromService en xml: "_xml)
En la traza nos informa de que el método "RootObject" para los documentos DICOM, los EnsLib.DICOM.Document, no existe:
Encontré este pequeño artículo de @Brendan Bannon de hace unos años... pero creo que es muy útil para cuando tengamos estructuras de almacenamiento basadas puramente en globals y queramos tener la posibilidad de acceder a ellas desde el punto de vista de Objetos y/o Relacional.
El fichero ZIP adjunto contiene un paquete de ejemplos de mapeos SQL Storage (válido para IRIS y Caché) que he hecho y recopilado a lo largo de estos años.
¡Hola Comunidad!
Esta publicación es una introducción a mi aplicación iris-globals-graphDB en Open Exchange.
En este artículo, mostraré cómo guardar y recuperar Graph Data en InterSystems Globals con la ayuda del frameworkPython Flask Web y la librería PYVIS Interactive network visualizations.
Hola a todos.
Estoy intentando crear una regla de enrutamiento para llamar a un web service según el valor de un parámetro de un mensaje.
Mi primer intento es el siguiente:
Tengo una clase común con toda la información, BuscarHuecoRequest, y comprubea cual es el valor de la propiedad "CodigoProveedor".
La tabla T_PROVEEDOR contiene la lista de códigos de los proveedores, si es F, llama a WSF, si es C, llama WSC, etc... Usando un transformador para convertir los valores para este proveedor.
Lanza un error, porque no la propiedad CodigoProveedor no existe.
He depurado y he visto el siguiente código:
Con el reciente cambio de horario en España me surgió esta duda:
¿Como obtenéis un $ZTIMESTAMP en horario local?.
He encontrado esta forma y funciona:
Set LocalTimestamp=$ZDATETIMEH($ZTIMESTAMP,-3)
¿Conoces alguna forma mejor de hacerlo?
(Consulta aquí el artículo en inglés )
https://community.intersystems.com/post/ztimestamp-local-time
Buenos días,
Primero, ante todo, muchas gracias de antemano por leernos y responder
Además, agradecer cualquier apoyo, porque es un alivio, apoyo, aporte, auxilio contar con personas con más entendimiento, conocimiento y práctica.
Existe la siguiente necesidad:
Se dispone de 2 circuitos:
1º Circuito DICOM de "Studio" ( Servicio clásico )
Servicio: clase: DICOM.BS.QueryService
Proceso: clase: DICOM.BP.QueryProcess
Operacion: clase: EnsLib.DICOM.Operation.TCP
Probamos desde la "Salida" del "Studio" mediante:
do ##class(DICOM.BS.QueryService).TestFind("102030")Donde "102030" es el PatientID del usuario
La empresa nació por la pasión de dos jóvenes por la tecnología, pasión que con los años se ha convertido en nuestra profesión, con el propósito de innovar en el mundo del comercio electrónico. Nos dedicamos al desarrollo del software, y gracias a nuestra experiencia en el mundo del E-commerce, ofrecemos soluciones para todo el proceso, desde la fase de mentorización inicial hasta la puesta en marcha y mantenimiento de los sistemas de información, para empresas tanto nacionales como internacionales.
Hola ¿cómo están?
Estamos indagando cómo recuperar datos mediante una Operación: EnsLib.DICOM.Operation.TCP
Hemos configurado en: Ensemble > Configuración de DICOM > Configuración de DICOM
Las configuraciones de contexto como:
ESBPRE > VNAPRE
VNAPRE > ESBPRE
Siendo para ambas los Contextos de Presentación, los por defecto:
Lo cual hemos generado mediante el código encontrado en el ejemplo del "Namespace: ENSDEMO", el cual hemos incluido en el OnStart() de la Producción:
Ya están disponibles nuevas versiones de mantenimiento de: