¡Hola Marta! ¿Has echado un ojo al parámetro Ignore inbound ack del business service?
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KE…
- Inicie sesión para enviar comentarios
¡Hola Marta! ¿Has echado un ojo al parámetro Ignore inbound ack del business service?
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KE…
Buenas de nuevo Marta.
El problema radica en que el ORL^O34 no es propiamente un mensaje de ACK, los cuales sólo informan de la recepción (acknowledgement) de un mensaje. Por lo tanto el business service, al tener configurado el Modo ACK a Application y recibir un mensaje ORL^O34, remitirá siempre un ACK tras dicha recepción.
El parámetro "Omitir ACK entrante" sólo funciona para ignorar todos los mensajes ACK^XXX que reciba el business service. Si queréis que no se envíe ningún ACK de respuesta ante la recepción del ORL^O34 podríais crear un business service específico para recibir esos mensajes y configurar el Modo de ACK tal que así:
.png)
¡Hola Marta! ¿Funcionó la idea que te sugerí?
Buenos días Yone, ¿has probado con el siguiente comando?
set token = %request.GetCgiEnv("HTTP_AUTHORIZATION"))Aquí tienes una pregunta de la comunidad similar a la tuya que quizás te resulte interesante:
https://community.intersystems.com/post/get-request-header-rest-api
¡Buenas Jaime!
Puedes configurar tu aplicación web desde la edición de las aplicaciones web para que funcione con autorización por password. (System > Security Management > Web Applications)
.png)
A continuación deberás acceder a la pestaña de Application roles y asignar los roles que consideres necesarios para el usuario que se ha logueado con éxito en la aplicación. Esto le asignará dichos roles únicamente en el contexto de la invocación del servicio web, es decir, fuera de ese acceso el usuario seguirá con sus roles habituales..png)
Con esta configuración el último paso será enviar el usuario y la contraseña en la cabecera de tu invocación REST como un tipo de autentificación Basic (o bien pasar por URL los parámetros ?CacheUserName=username&CachePassword=password), en ambos casos sería recomendable que la invocación se haga usando https para evitar exponer el usuario y la contraseña abiertamente.
De esta forma tendrás una validación de los datos del usuario y la asignación de los roles necesarios dentro del contexto de la invocación del servicio web.
Buenos días Yone, por definición los campos de la cabecera de un mensaje HTTP son case-insensitive por lo que a ESB llegan ya en minúsculas. Puedes echar un ojo a esta URL donde se explica: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
Buenas Yone. Al ser tu collection una propiedad de otro elemento podrías usar el método Serialize para obtener el %String, luego sólo tendrías que añadir los corchetes al inicio y al final. Puedes ver la documentación al respecto en la siguiente URL:
https://docs.intersystems.com/iris20201/csp/documatic/%25CSP.Documatic…
Buenas Yone. Sospecho que quizás el problema pueda estar en la definición del objeto GetCursosAdmitidosResponse, según su definición tiene una propiedad cursos:
Property cursos As list Of EsquemasDatos.miFormacion.CursoAdmitido;Pero lo que enviais para hacer el mapeo de json al objeto comienza así:
[
{
"codigo": "5128",
"descripcion": "LAS ENFERMERAS FRENTE A LOS PROBLEMAS DE SALUD MENTAL",
"programa": "Probabilidad de contagio ante un accidente hemático.",
"admitido": 1,
"desdefecha": "26/10/2022",
"hastafecha": "26/10/2029",
"cursohorario": [
{
"aula": "AULA 1",Cuando debiera ser:
"cursos": [
{
"codigo": "5128",
"descripcion": "LAS ENFERMERAS FRENTE A LOS PROBLEMAS DE SALUD MENTAL",
"programa": "Probabilidad de contagio ante un accidente hemático.",
"admitido": 1,
"desdefecha": "26/10/2022",
"hastafecha": "26/10/2029",
"cursohorario": [
{
"aula": "AULA 1",Yo probaría modificando el JSON que estáis enviado para ver si es ese el problema.
¡Hola Albert! Te agradecería que, para beneficio de todos los usuarios de la comunidad de desarrolladores en español, planteases la pregunta traducida al español si es posible.
Con respecto a tu pregunta, prueba con la siguiente query:
SELECT
a1.ID, AVG(a1.Price)
FROM Comp.AlbLin a1
WHERE a1."Date"in (SELECT TOP 3 a2."Date"FROM Comp.AlbLin a2 WHERE a1.ID = a2.ID ORDERBY a2."Date"DESC )
GROUPBY a1.ID orderby a1.ID ascEntiendo que el campo AlbLin.ID no es único por lo que indicas, por lo que podemos utilizar como criterio la fecha del dato. Te explico un poco la query:
Pues bien, la subquery nos devolverá las 3 últimas fechas que usaremos en la query principal para sólo utilizar aquellos registros relativos al AlbLin.ID que coincidan con esas fechas (la subquery usa dentro de su WHERE el identificador de la query principal).
Prueba la query y coméntanos el resultado.
¡Hola Yone! ¿Funcionó la solución propuesta?
¿Has podido probar la query que te comenté, Alberto?
Hola Yone! Justamente han preguntado algo parecido en la comunidad en inglés, te copio el hilo:
https://community.intersystems.com/post/creating-json-objects-objectscr…
Pues solo tienes que meter la condición de la subquery entre paréntesis y añadir un And con la condición de la fecha a modo de:
WHERE (date>X AND subquery top 2) OR (date <=X AND subquery top 3)
Personalmente siempre he usado la de %JSONExport para transformar el JSON de una llamada REST por su sencillez de uso, pero es más una opinión personal.
Genial Albert, ¡muchas gracias! Y no te preocupes, para eso estamos. Puedes preguntar todo lo que necesites.
Venga, animaos. Que luego no vale quejarse amargamente por que algo no os guste.
¡Enhorabuena a los ganadores y gracias a todos los participantes!
$SYSTEM.OBJ.IsUpToDate("classname")Buenas @Daniel Aguilar! Pues la principal ventaja de usar producciones es que puedes hacer un seguimiento de las peticiones que has recibido así como el ciclo de vida de esa petición dentro de tu sistema, desde la recepción, transformaciones en BP y almacenamientos u otras operaciones en el BO.
Una vez que esos mensajes se persisten puedes realizar búsquedas por la fuente del mensaje, fechas, cabeceras del mensaje, etc...y estos quedarán almacenados hasta que se programe una tarea de purgado.
Puedes ver en la documentación oficial que no tenemos ningún atajo para saltar a una determinada línea: https://intersystems-community.github.io/vscode-objectscript/studio/#bo…
Se recomienda la instalación de una extensión de terceros para replicar dicha funcionalidad: https://marketplace.visualstudio.com/search?term=bookmark&target=VSCode…
Buenas @Nicolas Orellana !
Echad un vistazo a esa documentación a ver si os puede ser de ayuda en la instalación:
InterSystems wants you!

Pues sí lo he probado y está en torno al 50% de aciertos...así que no va mal, está por encima del 33% de aciertos del puro azar :D
Buenas tardes @Xavier Gracia Aloy, nuestro compañero @Alberto Fuentes creo un ejemplo de un C-FIND que quizás se aproxime más a lo que necesitas:
https://community.intersystems.com/post/interoperability-example-dicom-…
Pregunta a cualquiera que haya perdido 3 horas de trabajo en un BPL 😄
Buenas @Victor Quisbert
HL7 es un estándar de intercambio de información clínica y por lo tanto cubre una gran variedad de tipo de datos. Cada mensaje corresponde a un tipo de evento (admisión hospitalaria, solicitudes de laboratorio...), en esta URL puedes comprobar todos los tipos de mensajes que existen:
https://hl7-definition.caristix.com/v2/HL7v2.5.1/Tables/0076
Cada mensaje se compone a su vez de una serie de segmentos que portan una determinada información, tales como los datos del paciente, información sobre ubicaciones hospitalarias, tipo de pruebas...puedes consultarlos en la siguiente URL:
https://hl7-definition.caristix.com/v2/HL7v2.5.1/Segments
Y en el caso de que eches de menos algún tipo de dato, siempre puedes crear tus propios segmentos y crear versiones derivadas del estándar.
Nada mejor que la Wikipedia para entender qué es HL7:
Buenas Víctor, aquí tienes un ejemplo de un mensaje HL7 para informar sobre infraestructuras:
https://hl7-definition.caristix.com/v2/HL7v2.5.1/TriggerEvents/MFN_M05
Veamos los resultados para esta jornada:
.png)
Pues nada mal, la verdad ¡9 aciertos de 15!
Veamos como fue la predicción de esta jornada:
.png)
¡Pues esta jornada ha sido un total fracaso! Sólo hemos tenido 4 aciertos, bueno, aún así no cejaremos en nuestro empeño de enriquecernos.
¡Y ahí es donde más fallo 🤣