Es posible cambiar ...
 

Es posible cambiar el orden de ejecución de un canal?  

  RSS

(@johansanchez)
Miembro Eminente
Registrado: hace 2 meses
Mensajes: 17
11/06/2019 2:32 pm  

Buenos días estimados amigos!!!

Como ven soy nuevo en el foro este es mi primer tema, conocí esta fabulosa herramienta mirth connect y estoy ansioso de conocer internamente su funcionamiento.

Por esta razón hoy vengo a consultarles amablemente si es posible cambiar el orden de ejecución de un canal y por que hago la pregunta?

En practicas tengo realizando una consulta a una BD que tiene 3 tablas entonces primero debe consultar la info del paciente y luego la solicitud, se me dio por crear un canal para pacientes es decir carga la información básica del paciente, luego creo otro canal en el que cargo la solicitud de una orden, en ciertos momentos primero se activa el canal del paciente y luego el de las ordenes, pero en ciertos momentos se activa el de las ordenes y aquí causa conflicto, por que cierta información de la orden necesita pre-requisito datos del paciente, por lo que no me carga nada, por lo cual hago la pregunta .... Es posible realizar primero la ejecución de un canal y luego de otro?

De antemano mis mejores saludos y espero tengan un buen día.


Cita
Nikkator
(@nsoria)
Miembro Moderator
Registrado: hace 4 años
Mensajes: 30
12/06/2019 9:01 am  

Hola johansanchez.

Me alegro que participes de nuevo en el foro.

 

El orden de ejecución de los canales entiendo que vendrá definido por un canal principal que llama a estos canales secundarios a través de conectores de tipo Channel Writer, ¿es así?.

En tal caso, lo que debes hacer para poder intercambiar el orden de ejecución de esos canales secundarios es utilizar una variable en lugar de un nombre fijo en la selección de canales del conector de tipo Channel Writer. Te lo muestro con una imagen (imagen_1.png).

En un paso previo, debes asignar a las variables los nombres de los canales a los que quieres enviar el mensaje en función de lo que necesites hacer primero.

De esta forma, tendrás 2 conectores de destino de tipo Channel Writer en tu canal principal que se llamarán a un canal o a otro dependiendo de lo que necesites hacer primero.

Espero haberlo explicado bien, pero si no fuera así, no dudes en seguir preguntando.

 

Un saludo.

 


ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 9 meses
Mensajes: 26
12/06/2019 2:36 pm  

Buenas tardes Johan,

si necesitas mantener la estructura de canales la solucion de nikkator es muy buena, sin embargo yo cuestiono la necesidad de tantos canales e intentaria convertirlos en destinos.

Por lo que me comentas parece que hay un solo punto de entrada, lo que nos llevaria inicialmente a un solo canal, despues en sucesivos destinos vas emulando tus canales, uno para paciente, uno para ordenes, etc... en cada uno recuperas la informacion que necesitas y si alguno te falla lanzas un error, sino, por el orden de los destinos (que ademas son muy faciles de cambiar de orden) ya te queda solucionado el problema.

En general, y mas al principio de utilizar Mirth, evita general estructuras con mucho canales y centrate mas en soluciones de destinos multiples. Habitualmente la pista esta en la entrada de datos...si solo hay un tipo de entrada...un solo canal. Tambien lo puedes plantear como si cada canal fuera un servicio (servicio de pacientes, de ordenes, etc), pero eso ya es otra cosa muy diferente.

Espero que te ayude,

RB

 


ResponderCita
(@johansanchez)
Miembro Eminente
Registrado: hace 2 meses
Mensajes: 17
12/06/2019 5:31 pm  

Hola Nicolas

De antemano muchas gracias por tu amable respuesta, bueno te voy a decir con mis palabras lo que te entendi:

1. debo crear un canal nuevo

2. Este nuevo canal llamara los canales que yo quiero que se ejecuten en un orden, en estos momentos yo tengo dos canales un canal que crea un paciente en el LIS que se llama "SQLServer_to_WSDL_Paciente" y otro canal que se llama "SQLServer_to_WSDL_Orden"

Hasta aquí eso fue lo que comprendí, si es así, adjunto la foto de como hice un canal llamado test para la prueba.... jajajajaja pero quede mareado como hago la ejecucion del primer canal que se llama  "SQLServer_to_WSDL_Paciente" y este crea el paciente en el lis, y luego se me deberia ejecutar el siguiente canal llamado "SQLServer_to_WSDL_Orden"

Nicolas te cuento de mi proyecto: en el source yo voy y consulto una BD de SQL server y luego en el destination llamo el WSDL y aqui envio toda la info al LIS, esto funciona de maravilla, pero en algunos casos primero se me ejecuta el canal de ordenes y me saca un error el LIS diciéndome que no tiene historia para montar la orden, esto es por que es necesario tener un paciente para crear una orden, por tal motivo a mi me gustaría que primero se ejecutara el canal de pacientes y unos segundos después se ejecutara el de ordenes, 

Por otra parte te comento que el ambiente de pruebas que estoy utilizando es mi computadora personal y allí tengo un gestor de maquinas virtuales donde albergo un windows sql server y alli tengo instalado en modo de pruebas el LIS y el motor de BD sql server, en mi computadora física instale el mirth connect, aquí hago el llamado al SO de la maquina virtual.

Espero haberme hecho entender y puedas darme una luz

Mil gracias estimado amigo 


ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 9 meses
Mensajes: 26
12/06/2019 5:52 pm  

Hola Johan,

cuanto mas se de tu proyecto mas claro tengo que debes implementarlo con destinos y no con canales. Si el envio al LIS depende de que el paciente este registrado va a ser mucho mas sencillo con destinos ya que solo ejecutaras el destino de la orden al LIS si el destino del registro de pacientes ha sido correcto.

Un saludo,

RB

 


ResponderCita
Nikkator
(@nsoria)
Miembro Moderator
Registrado: hace 4 años
Mensajes: 30
12/06/2019 6:05 pm  

Así es ricber, según la última respuesta de johansanchez, parece que lo que necesita no es cambiar el orden de ejecución de ciertos canales o conectores, si no ejecutar uno de ellos o no en caso de ser necesario.

johansanchez, creo que bastaría con filtrar el conector "SQLServer_to_WSDL_Paciente" en caso de que el paciente ya exista, y ejecutarlo en caso de que no. Para ello puedes usar los filtros de los conectores de destino, siempre y cuando puedas saber de antemano si existe o no el paciente en el LIS. Si no puedes saber ésto, entonces no podrás ejecutar el filtrado y deberás tratar de ejecutar "SQLServer_to_WSDL_Paciente" siempre.

Si la ejecución de "SQLServer_to_WSDL_Paciente" te devuelve un error cuando el paciente ya existe, podrías no considerarlo como un error procesando la respuesta en el transformador de respuesta agregando el siguiente código:


responseStatus = SENT;

 


ResponderCita
(@johansanchez)
Miembro Eminente
Registrado: hace 2 meses
Mensajes: 17
12/06/2019 6:43 pm  

De nuevo muchas gracias por sus respuestas. Les comento:

Tengo dos canales por que ellos hacen distintas cosas en el source por ejemplo el canal de pacientes tiene foto 1 y el canal de ordenes hace otras cosas en el source foto 2, por ese motivo pues casi sin ninguna experiencia con mirth decidí realizar los dos canales, pero ahora me veo en el dilema de los tiempos de ejecucion.... y Nicolas tiene la razón puede ser que un paciente valla en repetidas ocaciones al hospital y ya este registrado en el LIS, y esta parte no la había contemplado... solo en las pruebas estoy borrando la BD del LIS y cambio los estados de la tabla intermedia y mirth hace su trabajo, pero ahora mismo hago pruebas para verificar que cuando vulva el paciente cual es el trabajo del mirth


ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 9 meses
Mensajes: 26
12/06/2019 9:01 pm  

Hola Johan,

lo que envias creo que indica que debes replantearte el diseño y tenes muy claro lo que quieres hacer antes de tocar nada mas. Entiendo que hace cada canal (mas o menos), pero no puedo llegar a entender a donde quieres llegar.

En un caso clasico todo empieza con un paciente (sin paciente no hay peticion), pero a partir de ahi sin poder contextualizar el problema no se como ayudarte.

Un saludo,

RB

 


ResponderCita
(@johansanchez)
Miembro Eminente
Registrado: hace 2 meses
Mensajes: 17
13/06/2019 4:14 pm  

Buenos días Ricber

Saludos estimado amigo. estuve revisando y fíjate que el tema de la ejecución de los canales creo que logre estabilizándolos primero que se ejecute uno y luego el otro con lo siguiente.

1. he creado dos grupos uno lo llame paciente y otro lo llame ordenes

2. monte en el grupo de pacientes el canal de pacientes y en el grupo de ordenes el canal de ordenes.

Aquí me di cuenta de algo cuando le doy click a canales el me muestra los canales que tengo (Junto con los grupos también) y allí aparecen unas columnas... una de ellas es el "Local id" y me di cuenta que al principio el canal de ordenes tenia el  "Local id" 2 y el de pacientes el 1, entonces, hice un exporte de los canales y los guarde y paso siguiente los borre del mirth, y los volví a llamar en grupos distintos primero el de pacientes que le dio el "Local id" 1 y luego el de ordenes y le dio el "Local id" 2, cambie los estados en la BD y funciono.... que que posiblemente no es una solución lógica pero, como tu me dices quizás es muy difícil realizar lo que pienso y por eso no logro explicar mis intenciones respecto al tema.

Pero este tema me ha servido por que uds me han puesto a pensar en algo importante que no había tenido en cuenta y es: debería tener la logica para interpretar que un paciente ya esta y debo primero preguntar si esta para no causar un conflicto en el mirth ni en el LIS.

Estaba pensando que en el canal de paciente en el source donde tengo un select consultando la BD podría tener un condicional que me recorriera la columna documento del paciente y verificara existencia, si no la encuentra, no intente enviar el paciente al LIS pero si cambie el estado de la tabla estado, esto con el fin de que el HIS interprete que si leí la tabla solicitud del paciente...

Y bueno adelanto en este foro que ahora mismo creare para que por favor amablemente me ayuden. y respecto al tema de consulta de resultados. (Estoy pensando en el nombre)

Muchísimas gracias por su tiempo


ResponderCita
Share:
caduceusadminForum