ir a la publicación Yone Moreno · 2 ene, 2025 Gracias por ambas respuestas @Laura Blázquez García y @Luis Angel Pérez Ramos Hemos descubierto que también se puede probar de la siguiente manera: Activando la Operación Configurando: Parámetros Adicionales > Acciónes código respuesta: E=R Tiempo de espera para error: -1 Control de Alertas: Alerta sobre la espera en la cola: 5 URL del Servicio Web: Cambiarla para que NO conecte con Sistema Destino Con la anterior configuración en la Operación, al reenviar los mensajes, se encolan, y se ve la Alerta generada: De nuevo: muchísimas muchísimas gracias a Laura y a Luis por sus respuestas. Muchas muchas gracias :=)
ir a la publicación Yone Moreno · 27 sep, 2024 Gracias @Luis Angel Pérez Ramos por tu iniciativa de investigar cómo aplicar la IA y las herramientas de Intersystems y publicar al respecto, está muy interesante :=) ✅✅✅👌👌👌🙌🙌🙌
ir a la publicación Yone Moreno · 31 jul, 2024 Muchas gracias @Luis Angel Pérez Ramos , porque es un ejemplo muy práctico, y me parece muy interesante la forma en la que lo has explicado de manera más visual, mediante el apoyo de las imágenes de la propia aplicación para ilustrar los casos de uso. Muchísimas gracias Luis Ángel por tu explicación. Por cierto, conocías que: han creado una herramienta web de Inteligencia Artificial conversacional, a la cual solicitar códigos CIE-10. https://www.notetoicd10.com/ ( no tengo ninguna relación con los creadores, ni gano nada citándola; únicamente me topé con ella por casualidad ). Por ejemplo si le escribes: "Get a code for pain in the eye" te muestra: Ocular pain, unspecified eye H57.10 Ocular pain, right eye H57.11 Ocular pain, left eye H57.12 De nuevo, muchísimas gracias Luis Ángel por tu explicación.
ir a la publicación Yone Moreno · 6 jun, 2024 Gracias Laura, muy interesante tu artículo, para ser sincero es la primera vez que leo sobre Python en IRIS (sé que existía, sin embargo no había leído al respecto).
ir a la publicación Yone Moreno · 27 mayo, 2024 Gracias por la ayuda, y gracias por la respuesta @Luis Angel Pérez Ramos
ir a la publicación Yone Moreno · 20 mayo, 2024 Hola Carlos :=) Me ha encantado tu artículo. Lo has explicado de una manera muy clara y didáctica, lo cual es esencial para un tema tan técnico y crítico y profundo y "denso", como la seguridad en la gestión de datos. Aquí te comparto mis reflexiones y comentarios sobre algunos puntos que considero especialmente importantes y que merecen ser destacados. La analogía de la vivienda compartida es excelente para ilustrar la necesidad de controles de acceso más finos. Todos entendemos la incomodidad de no tener privacidad en nuestras habitaciones, y esta comparación hace que el problema de seguridad de datos sea muy sencillita de comprender. Me pareció particularmente útil tu explicación detallada del token de acceso (JWT). Has desglosado su estructura de una manera que facilita entender cómo se compone y qué información crítica contiene. Es crucial que quienes trabajamos con sistemas de autenticación comprendamos bien estos elementos, ya que son la base para garantizar que solo los usuarios autorizados accedan a los recursos adecuados. La explicación paso a paso de cómo construir las cerraduras es de gran valor. Detallas los métodos y los parámetros necesarios para la validación del token y del "aud" de una forma que cualquiera con conocimientos básicos de programación podría seguir. Está super práctico este apartado. Finalmente, tu sugerencia sobre cómo monitorizar y alertar sobre intentos de acceso no autorizados es muy interesante. Has desmenuzado un tema complejo en pasos manejables y entendibles, lo cual es una habilidad muy valiosa. Y la analogía de la vivienda compartida es un alivio mental para entenderlo de manera cotidiana. Te felicito por el gran trabajo y por compartir tus conocimientos de manera tan generosa Carlos. :=)
ir a la publicación Yone Moreno · 10 mayo, 2024 Gracias por compartirlo Luis Ángel. ¿Entonces esto serviría para poner desde la Producción Web, el nombre de la Operación a la cual el Proceso envía? Una duda: ¿serviría poner una lista de nombres separados por comas, para enviar a varias Operaciones? Gracias por compartirlo, no sabía que esto era posible.
ir a la publicación Yone Moreno · 3 mayo, 2024 Muy interesante, que curioso, muchas gracias por compartir el cómo funciona el proyecto, Luis Ángel, en la página del Open Exchange. Una cuestión, ¿los datos que obtiene el modelo tras hacer webscrapping con python, son del histórico, sin tener en cuenta los de este año? o ¿se tienen en cuenta los partidos ya jugados de este año?. Lo pregunto por curiosidad.
ir a la publicación Yone Moreno · 9 nov, 2023 Y cuando la añadan: "Implement autosave for DTL and BPL pages" https://ideas.intersystems.com/ideas/DPI-I-452 ; también estaría interesante que se anuncie.
ir a la publicación Yone Moreno · 9 mayo, 2023 Gracias Luis Ángel Pérez. En el hilo, se explican 3 formas de convertir Objeto a JSON, ahora bien; ¿cuál de las 3 es la recomendada por Intersystems, la preferible y/o estándar y por qué? Eduard Lebedyuk expone 2 alternativas: 1º Utilizar la clase "result set" para contener los resultados: Para utilizar esta opción, se debe crear una clase que extienda de %RegisteredObject y %JSON.Adaptor que tenga propiedades para contar los resultados (count) y una lista de los mismos (results). Por ejemplo: Class Test.JSONRS Extends (%RegisteredObject, %JSON.Adaptor) { Property count As %Integer; Property results As list Of Book; } Luego, se puede convertir un objeto normal a un objeto dinámico y asignarlo a la propiedad results de la clase Test.JSONRS utilizando la función %ObjectToAET: set dynObj = ##class(%ZEN.Auxiliary.altJSONProvider).%ObjectToAET(obj) set resultSet = ##class(Test.JSONRS).%New() set resultSet.count = <cantidad de resultados> set resultSet.results = dynObj set jsonString = resultSet.%ToJSON() 2º Utilizar un enfoque más simple: En esta opción, se genera el JSON directamente utilizando la función %JSONExport para cada objeto y concatenando los resultados. Por ejemplo: set jsonString = {"results": <cantidad de resultados>, "items": [ ##class(%JSON.Adaptor).%JSONExport(obj1)_", "_##class(%JSON.Adaptor).%JSONExport(obj2)_", "_...]} Este enfoque es más simple pero puede ser menos eficiente en términos de uso de memoria y tiempo de ejecución. Sin embargo, puede ser más adecuado para casos en los que se trabaja con un pequeño número de objetos. Por otro lado, Muni Ganesh explica esta 3ª vía: Emplear la función "%ToJSON()" para convertir el objeto "MainObj" a formato JSON y se imprime el resultado. set array=[] set obj = {} set obj.title="For Whom the Bell Tolls" set obj.author="Hemmingway" do array.%Push(obj) set obj = {} set obj.title="The Invisible Man" set obj.author="Ellison" do array.%Push(obj) set obj = {} set obj.title="Tender is the Night" set obj.author="Fitzgerald" do array.%Push(obj) set arraylen=0 set iter = array.%GetIterator() while iter.%GetNext() { set arraylen=$I(arraylen) } set MainObj={} set MainObj.results=arraylen set MainObj.items=array w MainObj.%ToJSON() ---------------------------------------------------------------------------------------------------------------- Output: {"results":3,"items":[{"title":"For Whom the Bell Tolls","author":"Hemmingway"},{"title":"The Invisible Man","author":"Ellison"},{"title":"Tender is the Night","author":"Fitzgerald"}]} -------------------------------------------------------------------------------------------------------------------- Desarrollando una integración en el ámbito de la interoperabilidad sanitaria, en un Servicio REST ¿cuál es la forma aconsejada por ustedes en Intersystems para convertir Objeto a JSON? ¿Cuál de las 3 es la recomendada por Intersystems, la preferible y/o estándar y por qué? Gracias, muchas gracias por leer y responder, un saludo.
ir a la publicación Yone Moreno · 18 abr, 2023 Gracias Luis Ángel. Cierto tienes razón; gracias por explicarlo. Los campos de la cabecera de un mensaje HTTP son case-insensitive y que, por lo tanto, llegan a un ESB ya en minúsculas. Esto facilita el procesamiento de los mensajes y es una característica importante de este protocolo de comunicación web.
ir a la publicación Yone Moreno · 15 mar, 2023 Aún seguimos sin encontrar respuesta a cómo conseguir que el ESB envíe una etiqueta XML vacía. Es decir si enviamos desde SoapUI <datosAdicionales /> al enviarlo el ESB lo quita. Hemos indagado instancialo vacío en el Servicio: if (solicitud.pdfFormulario.datosAdicionales.Size=0){ $$$LOGALERT("Entran en if solicitud.pdfFormulario.datosAdicionales.Size=''") do pRequest.solicitud.pdfFormulario.datosAdicionales.Insert(##class(EsquemasDatos.AdministracionElectronica.PLATEA.v02r00.tns.campoType).%New()) $$$LOGINFO("Al final del if: solicitud.pdfFormulario.datosAdicionales: "_pRequest.datosAdicionales.Size) }else{ $$$LOGASSERT("Va por else") set pRequest.solicitud = solicitud } Y en la clase de los datos: Parameter XMLIGNORENULL = 1; Parameter XMLUSEEMPTYELEMENT = 1; Por favor, ¿nos podrían indicar pasos mediante los cuales indagar investigar depurar resolver solventar este reto? Por compartir hábitos que Tribu de Mentores recomienda para mejorar la salud, junto con su respectivo emoji: 🏃♀️ Hacer ejercicio regularmente: La actividad física es esencial para mantener una buena salud. No es necesario que te conviertas en un atleta de élite, pero sí es importante que hagas algo de ejercicio cada día. Caminar, correr, nadar, hacer yoga o levantar pesas son algunas opciones que puedes considerar. 🥗 Comer alimentos saludables: La comida que consumes es tu combustible para el día a día. Es importante que te asegures de estar comiendo alimentos que te den los nutrientes que necesitas para mantenerte saludable. Intenta incluir más frutas, verduras, proteínas magras y granos enteros en tu dieta. 🚭 Dejar de fumar: El tabaco es una de las principales causas de enfermedades en el mundo. Si eres fumador, dejar de fumar es una de las mejores cosas que puedes hacer por tu salud. Si no fumas, asegúrate de evitar el humo del cigarrillo y otros productos de tabaco. 💤 Dormir lo suficiente: El sueño es fundamental para la salud mental y física. Intenta dormir al menos 7 horas al día para que tu cuerpo y tu mente puedan recuperarse y rejuvenecerse. También es importante tener una rutina de sueño regular para que tu cuerpo se acostumbre a dormir y despertar a las mismas horas cada día. 🧘♀️ Reducir el estrés: El estrés crónico puede afectar negativamente tu salud. Es importante que encuentres formas de reducir el estrés en tu vida. La meditación, la respiración profunda, el yoga y el tai chi son algunas técnicas que puedes probar para reducir el estrés.
ir a la publicación Yone Moreno · 14 mar, 2023 Para tratar de depurarlo por nosotros mismos hemos investigado los Parámetros XML que gestionan los nulos y vacíos: https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI... XMLUSEEMPTYELEMENT XMLIGNORENULL XMLNILNOOBJECT XMLNIL Por favor, ¿nos podrían indicar pasos mediante los cuales indagar investigar depurar resolver solventar este reto? Como añadido extra por si nos apoyan compartimos: Según el libro "Tribu de Mentores" de Tim Ferris, estos son los 7 hábitos que más contribuyen a mejorar el estado de ánimo y cuidar de la salud mental, física y personal integral de uno mismo: Meditación: 🧘♂️ La meditación es una práctica efectiva para reducir el estrés y la ansiedad, mejorar la concentración y la memoria, y aumentar la felicidad y la claridad mental. La meditación es una herramienta para fortalecer la atención y la introspección, y así, ayuda a la persona a entender mejor sus pensamientos y emociones. Ejercicio: 🏋️♀️ El ejercicio regular es fundamental para mantener una buena salud física y mental. Los beneficios del ejercicio incluyen la reducción del estrés y la ansiedad, la mejora del estado de ánimo, el aumento de la energía y la mejora de la calidad del sueño. Sueño: 💤 El sueño es esencial para el bienestar general, tanto físico como mental. La falta de sueño puede contribuir a la ansiedad, la depresión y la irritabilidad, así como a la disminución de la memoria y la concentración. Dieta saludable: 🥗 Una dieta equilibrada y saludable es fundamental para la salud física y mental. Los alimentos frescos y nutritivos pueden mejorar la concentración, la memoria y el estado de ánimo, y reducir el riesgo de enfermedades crónicas. Higiene personal: 🧼 La higiene personal es importante para la salud física y mental. Mantener una buena higiene personal puede reducir el riesgo de enfermedades, mejorar la autoestima y promover una sensación general de bienestar. Desconectar: 📵 Desconectar de las redes sociales, el correo electrónico y otras distracciones digitales puede ser beneficioso para la salud mental. Esto puede reducir la ansiedad y el estrés, mejorar la concentración y la productividad, y aumentar el tiempo libre y la creatividad. Tiempo en la naturaleza: 🌳 Pasando tiempo en la naturaleza puede ser beneficioso para la salud mental y física. Estar en la naturaleza puede reducir el estrés y la ansiedad, aumentar la energía y la vitalidad, y mejorar la salud cardiovascular. Estos son algunos de los hábitos que más contribuyen a mejorar el estado de ánimo y cuidar de la salud mental, física y personal integral de uno mismo, según el libro "Tribu de Mentores" de Tim Ferris.
ir a la publicación Yone Moreno · 29 nov, 2022 Hola Alberto, Gracias por la respuesta. Lo estudiamos internamente, probamos concienzudamente y te respondemos en cuanto nos sea posible. Muchas gracias de antemano. Un saludo.
ir a la publicación Yone Moreno · 28 nov, 2022 Adicionalmente hemos leído con atención: https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI... https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI... https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI... https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI... https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI... https://community.intersystems.com/post/making-jwtoauth20 Sin embargo, sí seguimos con la misma cuestión: ¿Qué vía existe para "llamar", "invocar", "comunicar" desde los otros entornos ( por ejemplo INTEGRACION ) con el Servidor de Recursos de PREPRODUCCION con el fin de Validar el Token? Es decir la pregunta de otra forma sería: ¿Qué mecanismo existe para desde un Entorno A (Integración) se comunique con un Entorno B (Preproducción) con la misión de Validar el Token desde el Entorno A empleando el Servidor de Recursos centralizados disponible en el Entorno B? Muchísimas gracias por su atención, y gracias por sus respuestas. Un saludo
ir a la publicación Yone Moreno · 2 nov, 2022 Alberto, para añadir más detalles: Puesto que los 2 son, Servicios.DICOM.VNAtoPACSImagenesMedicasv01r00 y Servicios.DICOM.MOVEImagenesMedicasv01r00 son de la clase: "EnsLib.DICOM.Service.TCP" con Adaptador: "EnsLib.DICOM.Adapter.TCP" Se pueden unificar Ahora bien, la cuestión a resolver es: ¿Qué es preferible 1 único Servicio donde se aúnan los FIND y MOVE/GET o 2 servicios con los FIND y MOVE/GET separados? ¿separados o juntos? Lo que sin embargo el reto seria que necesitamos si o si que ambos servicios apunten a los 2 Procesos: Es decir que en el Parámetro: "Nombre de configuración de destino dúplex" [Indicar los 2 procesos] por ejemplo: Procesos.DICOM.VNAtoPACSImagenesMedicasv01r00,DICOM Move Process ✍️📤Es decir: se enviarian los FIND a los 2 procesos por ejemplo: Procesos.DICOM.VNAtoPACSImagenesMedicasv01r00,DICOM Move Process y los MOVE/GET también se enviarían indistintamente a los 2 procesos: Procesos.DICOM.VNAtoPACSImagenesMedicasv01r00,DICOM Move Process 🔎🔎 Además NO sería trivial el discriminar, y/o distinguir entre un DICOM con comando FIND de otro DICOM (MOVE/GET) puesto que previamente existe el establecer conexión, mediante "EnsLib.DICOM.Notify.Established" También mencionar que el cribar un FIND de un MOVE/GET sería hacerlo mediante GetValueAt("CommandSet.AffectedSOPClassUID") = [Número del FIND/ Número del MOVE/GET] Actualmente la foto del circuito es: ¿Qué es preferible 1 único Servicio donde se aúnan los FIND y MOVE/GET o 2 servicios con los FIND y MOVE/GET separados? ¿separados o juntos? Aunque quizá sea un poco subjetivo, nos gustaría conocer qué se recomienda ¿Qué es preferible 1 único Servicio donde se aúnan los FIND y MOVE/GET o 2 servicios con los FIND y MOVE/GET separados? ¿separados o juntos? Muchas gracias de antemano Alberto, por leernos y respondernos. Un saludo.
ir a la publicación Yone Moreno · 2 nov, 2022 Buenos días Alberto: Hemos estado trabajando con los GET. Actualmente lo que hacemos es desde un Simulador origen dcm4che solicitar un get: ./getscu -b VNAPRE -c ESBPRE@XX.XXX.X.XXX:XXXX -m StudyInstanceUID="1.2.826.0.1.3680043.8.1055.1.20111102150758591.92402465.76095170" --store-tc "CTImageStorage:1.2.840.10008.1.2.4.91;1.2.840.10008.5.1.4.1.2.2.3,1.2.840.10008.1.2.1" El cual va mediante: ESBSSCC a otro ESBFUERTEV por su servicio dedicado: Servicios.DICOM.MOVEImagenesMedicasv01r00 El cual tiene como clase: EnsLib.DICOM.Service.TCP Obteniendo así cada uno de los 361 estudios con ese StudyInstanceUID Sin embargo se nos ha generado una duda. Puesto que actualmente disponemos de 2 servicios,: 1 para los FIND "Servicios.DICOM.VNAtoPACSImagenesMedicasv01r00" 1 para los MOVE/GET "Servicios.DICOM.MOVEImagenesMedicasv01r00" ¿Qué es preferible 1 único Servicio donde se aúnan los FIND y MOVE/GET o 2 servicios con los FIND y MOVE/GET separados? ¿separados o juntos?