ir a la publicación Laura Blázquez ... · 13 jun, 2025 He encontrado este artículo: https://community.intersystems.com/post/no-access-control-allow-origin-h... Es lo que me pasa a mi desde mi aplicación web (quitando el error del webgateway, que me da que simplemente la descripción no es correcta). Revisando el usuario CSPSystem, le he asignado el rol de la base de datos donde está el repositorio FHIR, y sigue sin funcionar, pero si le asigno el rol %All, funciona. Así que algún permiso me falta con este usuario, no consigo averiguar cuál...
ir a la publicación Laura Blázquez ... · 12 jun, 2025 Nada, sigue igual. He hecho otra prueba: he creado un servicio Rest que solamente devuelve un hola mundo, le he añadido los orígenes y tal como en el otro servicio, y éste sí funciona: A este servicio le he añadido el parámetro del cors: Parameter HandleCorsRequest As %Integer = 1; Así que he revisado la clase del servicio de FHIR (HS.FHIRServer.RestHandler), a ver si tiene esto, y lo tiene también. Es más, he comparado incluso el código de la versión 2025.1 con la versión 2024.3, a ver si es que en algún sitio hay algo distinto, pero son iguales. No entiendo qué pasa 😢
ir a la publicación Laura Blázquez ... · 11 jun, 2025 Las llamadas son https: Creo que tengo algo mal configurado, pero no sé exactamente dónde... El error dice que es un error de protocolo entre el webgateway y la instancia de IRIS. Lo que no entiendo es por qué no me sale ese error cuando accedo al portal de IRIS a través del gateway, o cuando llamo al repositorio FHIR a través de Postman (y también del webgateway)... Puede ser que tenga algo mal configurado en el repositorio FHIR? O en el webgateway? Esta es la config del webgateway: Esta la configuración del superservidor: Y el repositorio FHIR tiene todo por defecto, excepto el Service Config Name:
ir a la publicación Laura Blázquez ... · 10 jun, 2025 Estoy segura que es problema de CORS, pero tengo definido el origen permitido en la aplicación web del servicio Rest, igual que con el otro stack de Docker, es lo que no entiendo... Esto es lo que veo en el webgateway, con los logs puestos en EV9: >>> local-time="Mon Jun 9 10:31:43 2025" wg-build="RT 2501.1849 (linux/apapi:srv=2.4.58/apr=1.7.2/apu=1.6.3/mpm=worker)" wg-log-level=9 when="2025-06-09 10:31:43.321" level=DEBUG2 event=WebGateway.ProcessRequest pid=29 thread-id=281473464725792 csp-connection-no=2 csp-server="LOCAL" csp-server-pid=1386 csp-request-id=4 csp-session-id=G9je2ZjMCj csp-remote-addr=192.168.65.1 csp-page="OPTIONS /hyperobjects/fhir/r4/metadata" HTTP Request OPTIONS /hyperobjects/fhir/r4/metadata?_format=json HTTP/1.1 Host: yyyyy.cysnet.net:8743 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Accept: */* Access-Control-Request-Method: GET Access-Control-Request-Headers: authorization Origin: https://xxxxx.cysnet.net User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Sec-Fetch-Mode: cors Sec-Fetch-Site: same-site Sec-Fetch-Dest: empty Referer: https://xxxxx.cysnet.net/ Accept-Encoding: gzip, deflate, br, zstd Accept-Language: es,en-US;q=0.9,en;q=0.8 >>> local-time="Mon Jun 9 10:31:43 2025" wg-build="RT 2501.1849 (linux/apapi:srv=2.4.58/apr=1.7.2/apu=1.6.3/mpm=worker)" wg-log-level=1 when="2025-06-09 10:31:43.326" level=WARNING event=WebGateway.Interrupt pid=29 thread-id=281473464725792 csp-connection-no=2 csp-server="LOCAL" csp-server-pid=1386 csp-request-id=4 Interrupt InterSystems IRIS Process and Close the Connection Protocol Error between the Web Gateway and InterSystems IRIS (request_id=4; response_id=0). Así es como tengo configurada la aplicación del servicio rest: Y así el CSP.conf: # CSP config file CSPModulePath "${ISC_PACKAGE_INSTALLDIR}/bin/" CSPConfigPath "${ISC_PACKAGE_INSTALLDIR}/bin/" # Serve everything via Web Gateway. Conveniently, # we needn't worry about sharing this container with non-IRIS applications. <Location /> CSP On </Location> <Directory /> Options MultiViews FollowSymLinks AllowOverride None Require all granted <FilesMatch "\.(log|ini|pid|exe|so)$"> Require all denied </FilesMatch> </Directory> # SSL SECTION # # Enable SSL/TLS (https://) on the Apache web server. # The user is responsible for providing valid SSL certificates. LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so <VirtualHost *:443> SSLEngine on SSLCertificateFile "/webgateway-shared/certificates/xxxxx.crt" SSLCertificateKeyFile "/webgateway-shared/certificates/xxxxx.key" # Header add ACCESS-CONTROL-ALLOW-ORIGIN "*" </VirtualHost> # Redirect Help links Redirect /csp/docbook/ http://docs.intersystems.com/irislatest/csp/docbook/
ir a la publicación Laura Blázquez ... · 10 jun, 2025 Finalmente encontramos una solución. Mi colega @Miguelio lo resolvió. Lo ha documentado, así que aquí dejo el enlace: https://es.community.intersystems.com/post/persistencia-de-sesi%C3%B3n-o...
ir a la publicación Laura Blázquez ... · 28 mayo, 2025 Es algo que yo también he pensado alguna vez, por lo mismo que dices, el adaptador se entera cuando hay cambios en la tabla, lo cual es genial. No lo he probado, pero se me ocurre (rizando mucho el rizo), que quizá con una conexión jdbc a la base de datos de IRIS se pueda hacer?
ir a la publicación Laura Blázquez ... · 15 mayo, 2025 He encontrado en la documentación esto: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... He estado haciendo pruebas, y parece que esta es la forma de validar un XML contra un schema. Pasándole los ficheros, ya devuelve una lista de errores: (En este caso creo que el problema está en el propio schema como tal, ya que incluso validadores online me dan problemas 😅). Pero vamos, que creo que esta es la forma de hacerlo, no?
ir a la publicación Laura Blázquez ... · 29 abr, 2025 No había visto ese artículo, pero más o menos es lo que he seguido. No he instalado zpm-registry en una instancia de IRIS que ya teníamos, sino que he levantado un contenedor nuevo, con la versión community. Nuestro caso es que trabajamos para clientes que tienen IRIS, cada uno el suyo, pero tenemos librerías comunes que utilizamos en estos clientes. Mi idea era levantar un registry propio para nuestra compañía, en la que tener estas librerías disponibles para cualquier cliente, y en caso de que cada cliente lo necesite, levantar en sus instancias su registry privado. Entiendo, entonces, que lo ideal es tener el registry levantado en la instancia de IRIS que ya tengamos, y no utilizar un contenedor aparte con una versión Community. Es así?
ir a la publicación Laura Blázquez ... · 25 abr, 2025 Hola @Luis Angel Pérez Ramos! No veo el link al artículo, quizá te refieras a alguno de estos? https://community.intersystems.com/post/why-docker-ipm-and-objectscript-... https://community.intersystems.com/post/installing-objectscript-solution... De todas formas, mi pregunta va sobre tener nuestro propio repositorio IPM, privado. Es decir, crear nuestro propio registro. Lo he conseguido hacer en local, la verdad es que con la template que hay en el github de la comunidad ha sido muy fácil. Pero a la hora de tenerlo disponible para toda la compañía y empezar a subir nuestras propias librerías, antes de arrancarlo con la versión que hay ahora, etc, quería saber si es conveniente crearlo en una versión IRIS enterprise, o vale con que sea una IRIS Community. Gracias!
ir a la publicación Laura Blázquez ... · 4 abr, 2025 La cookie llega, conseguimos leerla con esta instrucción: Set tokenCookie = httpRequest.GetCookie("SessionToken") El nombre es inventado, no sé si quizá esté ahí el problema... O si se debe generar una cabecera o alguna historia para que funcione. Lo que no sabemos es qué hacer una vez leída la cookie y obtenido el token.
ir a la publicación Laura Blázquez ... · 2 abr, 2025 He estado repasando de nuevo el artítulo, he ido a GitHub y leído el README, y sobre la configuración cliente OAuth pone esto: Now you just have to click on Client Configurations to add a new Client Configuration. Define the application and client names (don’t forget the client name because we are going to use it in our FHIR configuration) and set the Client Type as a Resource Server. Now you can click on Dynamic Registration and Save. Al crear la configuración cliente, le he puesto el nombre de aplicación y cliente, el SSL y que es un servidor de recursos. Al hacer click en Registro dinámico, me da error, indicando que está deshabilitado: Y al hacerlo a mano, le pongo el ClientID y ClientSecret de la aplicación de Auth0, y me dice que el cliente se ha guardado, pero que no se ha registrado: Dónde tendría que registrarlo exactamente?
ir a la publicación Laura Blázquez ... · 1 abr, 2025 Sí, lo tengo configurado, junto con un servicio para tener traza de las peticiones (la producción está en marcha): Es más, el contenedor lo he creado en la versión 2024.1 por si había algo que no funcionase en la 2024.3. Pero nada... sigue igual :( Una pregunta: debería ver la cabecera Authorization desde el WebGateway? Porque no la veo, aunque entiendo que es por seguridad:
ir a la publicación Laura Blázquez ... · 1 abr, 2025 Hola! Estoy intentando montar esta aplicación y no consigo que funcione... Creo que no estoy configurando bien el cliente OAuth. Después de configurar todo, al acceder a la aplicación y llamar al repositorio FHIR con el token oauth me da un 401 Unauthorized: Sin embargo, si llamo desde Postman con usuario/contraseña de IRIS funciona sin problemas. La configuración del cliente la he creado como servidor de recursos: Y le he añadido la información de ClientID y ClientSecret a mano: Tengo la sensación de que no lo he hecho bien... Me podrías echar una mano? Gracias!!
ir a la publicación Laura Blázquez ... · 12 mar, 2025 Vais a conseguir sacarme los colores entre todos 😋 Muchas gracias!!
ir a la publicación Laura Blázquez ... · 24 feb, 2025 Gracias @Luis Angel Pérez Ramos! Nos lo guardamos para cuando nos toque configurarlo 😉
ir a la publicación Laura Blázquez ... · 23 ene, 2025 ¡Gracias Luis Ángel! Si he entendido bien lo que me recomiendas, sería utilizar el tipo de dato PosixTime en lugar del TimeStamp y crearle un índice normal, no? Pero el rendimiento no sería bueno, por lo que comentabas al comienzo, de que los valores no son únicos, verdad? O en este caso no haría falta índice? (lo probaré de todas formas 😉)
ir a la publicación Laura Blázquez ... · 2 ene, 2025 Hola, es justo lo que venía a decir. Si la operación está desactivada, y es en ésta donde tienes configurado el control de alertas, al no estar activo, no lo gestiona. Hace ya unos años, cuando estuvimos mirando esas configuraciones, nos pasó lo mismo. Para probarlo no vale con desactivar la operación. Nosotros lo que hicimos para probar fue añadirle al método que recibe los mensajes un hang para que estuviese ahí parado un rato. Al mandarle los mensajes y empezar a encolar, ya nos saltaba la alerta
ir a la publicación Laura Blázquez ... · 7 mar, 2024 Acabo de conseguir encontrar las referencias a las clases. Al abrir el XML, buscando "<Sub>CLS</Sub>" los siguientes 4 nodos son las 4 clases que no quiero que importe: Eliminando estos 4 nodos, ya puedo importar el archivo deploy en otro servidor. ---------------------------------------- Aunque ahora tengo otro problema: un BusinessProcess con código funciona bien, pero un BusinessProcess con BPL, no funciona. Creo que es porque el BPL genera un XData, así que tendré que cambiar el BPL por un proceso con código. Pero por lo menos ahora puedo añadir al archivo Deploy los BusinessProcess :)
ir a la publicación Laura Blázquez ... · 7 mar, 2024 Sí, lo estoy intentando, pero no es sencillo, porque el archivo tiene un montón de nodos, y no sé cuáles son referentes a esas clases.
ir a la publicación Laura Blázquez ... · 6 mar, 2024 Sí, lo he probado, y me sigue exportando las clases del core.