Pregunta
· 10 mar, 2022

DICOM: No hay asociación activa para Calling-AET 'YYY' y Called-AET 'AAA' ⸘ ‽

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:

/// Override this in your Production class to do setup before the Production starts
ClassMethod OnStart(pTimeStarted As %String) As %Status
{
    #; Make sure that the associations exist
    If '##class(EnsLib.DICOM.Util.AssociationContext).AETExists("ESBPRE","VNAPRE")
    {
        Do ##class(EnsLib.DICOM.Util.AssociationContext).CreateAssociation("ESBPRE","VNAPRE",$ListBuild($$$IMPLICITVRLETRANSFERSYNTAX))
    }

    If '##class(EnsLib.DICOM.Util.AssociationContext).AETExists("VNAPRE","ESBPRE")
    {
        Do ##class(EnsLib.DICOM.Util.AssociationContext).CreateAssociation("VNAPRE","ESBPRE",$ListBuild($$$IMPLICITVRLETRANSFERSYNTAX))
    }    


    If '##class(EnsLib.DICOM.Util.AssociationContext).AETExists("JD-SCU","ENS-SCP")
    {
        Do ##class(EnsLib.DICOM.Util.AssociationContext).CreateAssociation("JD-SCU","ENS-SCP",$ListBuild($$$IMPLICITVRLETRANSFERSYNTAX))
    }

    If '##class(EnsLib.DICOM.Util.AssociationContext).AETExists("ENS-SCU","JD-SCP")
    {
        Do ##class(EnsLib.DICOM.Util.AssociationContext).CreateAssociation("ENS-SCU","JD-SCP",$ListBuild($$$IMPLICITVRLETRANSFERSYNTAX))
    }

    Quit $$$OK
}

 

 

El reto, desafío al cual necesitamos acudir a ustedes para que nos apoyen, guíen, orienten, indiquen, informen, aconsejen, de cómo proceder es el siguiente:

Probamos la Operación de forma directa desde la Producción Web > Acciones > Prueba > ( Rellenamos los datos )

 

Al acceder a la traza nos encontramos el siguiente hándicap, reto, desafío, al cual necesitamos su auxilio, apoyo, indicaciones para depurarlo, solventarlo y corregirlo:

 

ERROR <EnsDICOM>NoActiveAssociation: No hay asociación activa para Calling-AET 'ESBPRE y Called-AET 'VNAPRE'

 

Siendo la visual:

¿Cómo podríamos reparar🔧, depurar 🐞⌨️, entender y solventar este desafío o reto?

 

Gracias por su lectura y respuestas

 

 

 

 

🔎 Hemos leido:

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...

https://github.com/intersystems-ib/iris-dicom-sample

https://github.com/dcm4che/dcm4che

 

Cualquier enlace a la documentación 📄, explicación detallada, paso a paso, o instrucciones para juntos indagar, investigar, atender este misterio, son bienvenidos 🙏.

 

Necesitamos su apoyo, aporte, axilio y respuestas, puesto que es algo bastante distinto a lo habitual y necesitamos mucha orientación, apoyo, y guía 🧭 con esta construcción. 🏗

 

Gracias 🙇‍♂️💭

Comentarios (5)2
Inicie sesión o regístrese para continuar

Hola Yone,

Me parece que estás intentado hacer una prueba de envío DICOM por TCP desde Producción > Acciones > Prueba.

Ese tipo de pruebas pueden servirte para casos más sencillos pero no para enviar un mensaje DICOM, que es un poco más complejo.

Si tienes el namespace ENSDEMO, encontrarás ejemplos de producciones que usan ficheros DICOM. Te pueden servir de punto de partida.

Si estás interesado en envío DICOM a través de TCP, necesitarás contar con un simulador. Te paso un ejemplo que utiliza interoperabilidad de IRIS y un simulador (dcm4che). Puedes seguirlo paso a paso: https://github.com/intersystems-ib/iris-dicom-sample

Échale un vistazo, si no consigues avanzar o tienes dudas podemos buscar un hueco la próxima semana y lo comentamos.

Hola Alberto,

Gracias por responder y explicar

Una duda:

¿el uso de las herramientas que comentas es posible para la version HS2017?

¿cual es la versión mínima IRIS para ello?

Lo preguntamos por dos motivos:

Primero: estamos desarollando en:

"" Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2017.2.1 (Build 801_3_18358U) Tue Jul 24 2018 16:36:10 EDT""

Segundo: se presenta el reto o desafío de emplear el simulador para probar DICOM dcm4che

Gracias por responder

Hola Yone,

Sí, puedes utilizar HS2017 para implementar integraciones con DICOM.

El ejemplo que te pasé está implementado en IRIS, pero puedes hacer lo mismo en HS2017.

En cuanto al simulador, puedes utilizar el que quieres. Yo he utilizado dcm4che en el ejemplo porque puedes utilizarlo desde línea de comandos en Linux. En el propio ejemplo está incluido cómo hacer algunas llamadas simples para enviar mensajes a través de DICOM TCP.

Hola Alberto,

gracias por responder, porque es un apoyo, alivio, auxilio y aporte tus indicaciones, instrucciones y ejemplos

Siguiendo tus indicaciones ubicadas en el ejemplo: https://github.com/intersystems-ib/iris-dicom-sample
Hemos realizado 2 pruebas:

Primera prueba: tratamos de guardar DICOM

Siguiendo el ejemplo 1: https://github.com/intersystems-ib/iris-dicom-sample#receiving-dicom-with-embedded-pdf

Circuito:

Siendo la respuesta del sistema destino:

                ERROR <EnsDICOM>PeerRejectedAssociation: La contraparte ha rechazado la asociación. Fuente: '' Motivo: ''

Además, realizamos una segunda prueba

Segunda prueba: Consultar y Recuperar, Query / Retrieve: https://github.com/intersystems-ib/iris-dicom-sample#query--retrieve-scenario

Siendo la respuesta por parte del sistema destino:

ERROR <Ens>ErrBPTerminated: Finalizando BP DICOM Query Process # debido a un error: ERROR <EnsDICOM>PeerRejectedAssociation: La contraparte ha rechazado la asociación. Fuente: '%1' Motivo: '%2'
> ERROR <EnsDICOM>PeerRejectedAssociation: La contraparte ha rechazado la asociación. Fuente: '%1' Motivo: '%2'

¿ de qué manera, Alberto, nos recomiendan ustedes depurar, buscar, investigar, indagar el porqué de estas 2 excepciones ?

¿ mediante qué mecanismo, o cuál sería tu proceso mental y toma de acciones para organizar, ordenar, entender y sobre todo seguir y dar con la causa de estas excepciones ?

¿ cuál sería la vía correcta para entender, atender, depurar, corregir, y comprender mejor este tipo de integraciones, Alberto ?

Muchas gracias por leer y responder, porque es un gran espaldarazo, auxilio y aporte el hecho de que nos hagas seguimiento y nos vayas indicando, ordenando, explicando, cómo continuar, o en qué ejemplos basarnos

Un saludo

Hola Yone,

En tu caso, parece que el host al que intentas conectar (supongo que es un simulador), está rechazando la conexión.

Quizá porque el documento DICOM que intentas enviar tiene un TransferSyntax que no está configurado. Lo mejor sería que intentaras obtener información / logs en el host que lo está rechazando. Por ejemplo si usas el simulador dcm4che te mostrará información que te puede ayudar a investigar qué ha sucedido.

Yo te recomendaría:

1-Intenta ejecutar el ejemplo que te pasé, utilizando contenedores, y comprueba que todo te funciona bien y comprendes cómo funciona la integración con DICOM.

2-Intenta replicar el comportamiento que te interese en tu propia producción con tu propio simulador. Ten presente la información que te devuelva el simulador. Te ayudará a comprender el proceso de negociación de la conexión y la transferencia.