Está en la página 1de 44

Manual de usuario de HydraDICOM

Manual de usuario de
HydraDICOM
Versin 2.2.14
MetaEmotion S.L
Todos los derechos reservados

contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM

Contenidos
1. Introduccin......................................................................................................................................4
1.1. Arquitectura..............................................................................................................................4
1.2. Instalacin y ejecucin..............................................................................................................5
1.2.1. Distribucin completa: HydraDICOM y JBoss 4.2.3.GA. (Recomendado).....................5
1.2.1.1 Cambio de puertos del Jboss......................................................................................6
1.2.2. Despliegue sobre contenedor de aplicaciones JBoss existente.........................................6
1.3. Despliegue................................................................................................................................6
1.3.1. Gestin como servicio de Windows..................................................................................7
1.4. Licencia.....................................................................................................................................7
1.5. Actualizacin desde versiones anteriores.................................................................................9
1.6. Errores.......................................................................................................................................9
1.6.1 Errores de inicializacin de los servicios...........................................................................9
1.6.2 Error en la activacin de licencia por internet...................................................................9
1.7. Cambio de contrasea...............................................................................................................9
2. HydraManager................................................................................................................................10
2.1 Barra de men..........................................................................................................................11
2.2 Biblioteca.................................................................................................................................12
2.2.1 Componentes de entrada..................................................................................................13
2.2.1.1 DICOM input...........................................................................................................13
2.2.1.2 Servicio Web C-FIND (SOAP)................................................................................14
2.2.1.3 Servicio WADO (http)..............................................................................................15
2.2.1.4 Servicio de Dicomizacin (http)...............................................................................15
2.2.1.4.1 Integracin del servicio de dicomizacin.........................................................16
2.2.1.4.2 Parmetros HTTP del servicio de dicomizacin...............................................17
2.2.1.5 Servicio de lectura de ficheros.................................................................................18
2.2.1.5.1 Lgica del servicio de lectura de ficheros........................................................19
2.2.2 Componentes de procesamiento.......................................................................................19
2.2.2.1 Scripting...................................................................................................................20
2.2.2.2 Inspector...................................................................................................................21
2.2.2.3 Patching....................................................................................................................22
2.2.2.4 PACS/Proxy..............................................................................................................24
2.2.3 Conectores de salida.........................................................................................................25
2.2.3.1 DICOM Output.........................................................................................................25
2.2.3.2 File writter................................................................................................................25
2.2.3.3 Componente de salida Alfresco................................................................................26
2.2.4 Componentes de enrutado................................................................................................27
2.2.4.1 Enrutador broadcast secuencial................................................................................27
2.2.4.2 Enrutador broadcast paralelo....................................................................................27
2.2.4.3 Enrutador round robin..............................................................................................27
2.2.4.4 Enrutador con scripting............................................................................................27
3. Modos de funcionamiento..............................................................................................................29
3.1 Modo de edicin......................................................................................................................29

contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM


3.2 Modo de ejecucin...................................................................................................................29
4. Men de herramientas....................................................................................................................30
4.1 Configuracin..........................................................................................................................30
4.1.1 Cache................................................................................................................................30
4.2 Historial de eventos.................................................................................................................31
4.3 SMTP server............................................................................................................................32
4.4 Alertas......................................................................................................................................32
4.5 Codificacin de imgenes........................................................................................................33
5. Ejemplos de funcionamiento..........................................................................................................35
5.1 Acceso Multipacs.....................................................................................................................35
5.2 Proxy DICOM..........................................................................................................................35
5.3 PACS/Proxy DICOM...............................................................................................................35
5.4 Servicio de dicomizacin.........................................................................................................36
5.5 Estrategias personalizadas.......................................................................................................36
6. Anexo I. Snippets de cdigo de ejemplo........................................................................................38
6.1 SOAP.......................................................................................................................................38
6.2 WADO.....................................................................................................................................39
6.3 Scripting...................................................................................................................................39

contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM

1. Introduccin
HydraDICOM es un motor de integracin DICOM cuya responsabilidad es la de mediar en la
operaciones DICOM estableciendo un punto de control software sobre las mismas.

1.1. Arquitectura
HydraDICOM est implementado como una coleccin de componentes sobre un ESB1
interconectados entre s. El sistema est diseado para ser contenido en un servidor de aplicaciones
JBoss 4.2.3.GA o en un contenedor de servlets Tomcat 7.0.
HydraDICOM permite desplegar un nmero arbitrario de servicios y componentes. Su editor visual
permite editar los componentes y sus conexiones, cada topologa es representada por un grafo
compuesto por nodos con una o ms entradas y/o salidas que se interconectan entre s.
Cada nodo tiene uno o varios conectores. Los tipos de conectores existentes son:
Conector de entrada externa. Esta marca indica que el componente tiene
conexiones de entrada desde sistemas externos.
Conector de salida externa. Este conector indica que el componente tiene
conexiones de salida hacia sistemas externos.
Conector de entrada interna. Este conector indica que el componente permite
realizar una conexin interna.
Conector de salida interna. Este conector indica que el componente permite
aceptar una conexin interna.

En modo ejecucin, aparecer una etiqueta en los cada nodo que indica el nmero de solicitudes
que estn siendo atendidas simultneamente en ese punto.
En la siguiente figura puede observarse el grafo de la configuracin por defecto.

1 Del ingls: Entrerprise Service Bus.


contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM

Los grafos que se pueden realizar en HydraDICOM tienen la particularidad de ser dirigidos y en la
mayora de los casos, acclicos.

1.2. Instalacin y ejecucin.


Advertencia: Los puertos usados en la configuracin por
defecto son:
8080 (HydraManager/JBoss)
8082 (WADO y C-FIND)
1104 (Dicom Input)
Si alguno de los puertos est usado por otros servicios en la
mquina donde se instalar HydraDICOM, el sistema podra no
arrancar correctamente.
HydraDICOM es un archivo de Aplicacin Web (WAR) escrito ntegramente en Java que puede ser
desplegado en cualquier servidor de aplicaciones JBoss 1.4.3.GA. El nico prerrequisito es
disponer de una mquina virtual de ejecucin java JRE 1.6.
HydraDICOM est soportado bajo los siguientes sistemas:

Linux 32 bits.

Linux 64 bits.

Windows 32 bits2.

Existen dos modos de instalacin en funcin del entorno:

1.2.1. Distribucin completa: HydraDICOM y JBoss 4.2.3.GA. (Recomendado).


2 Aunque HydraDICOM no est soportado de manera oficial sobre Windows de 64 bits, el sistema puede funcionar si
se ejecuta bajo JRE/JDK de 32 bits.
contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM


El nico requisito para este tipo de instalacin es tener instalada y debidamente configurado el Java
JDK 1.6.
Para su instalacin, nicamente es necesario descomprimir el archivo en un directorio arbitrario3:

jboss-4.2.3.GA_HydraDICOM-2.2.14.zip

Para iniciar el sistema, nicamente es necesario ejecutar el script de arranque ubicado en el


directorio raiz de la instalacin:
En Sistemas Windows:
run.bat
En Sistemas basados en Unix:
run.sh
El servicio arrancar en aproximadamente 10 segundos, mostrando en tiempo real los logs de la
aplicacin sobre la consola de ejecucin (o una consola que se abrir automticamente, en el caso
de Windows).
Advertencia: La ruta de instalacin del sistema no puede
contener espacios en los nombres de ninguno de sus
subdirectorios.
1.2.1.1 Cambio de puertos del Jboss

Se pueden modificar los puertos de Jboss. Para ello es preciso se deben seguir las instrucciones de:

http://community.jboss.org/wiki/ConfigurePorts

1.2.2. Despliegue sobre contenedor de aplicaciones JBoss existente.

Descomprimir el archivo de bibliotecas nativas en el directorio /bin/native de JBoss,


dependiendo de la arquitectura:
32bits.zip para Sistemas de 32 bits (Windows o Linux).
64bits.zip para Sistemas de 64 bits (Linux).

Copiar en el subdirectorio server/<perfil>/deploy el archivo HydraDICOM.war (o usar


gestor de despliegues remotos, segn las directivas del entorno).

Si dispone de licencia compatible para su sistema, copie en el subdirectorio


server/<perfil>/data el archivo de licencia renombrado como HydraDICOM.lic.

Aunque el despliegue es automtico, es recomendable reiniciar el servidor de aplicaciones.

1.3. Despliegue
El aplicativo contiene scripts y utilididades que pueden ser integradas o adaptadas para scripts de
3 La ruta completa del directorio de instalacin no debe contener espacios en blanco.
contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM


inicio Unix System V, daemontools, servicios de windows o demonio launchd de MacOS-X.
De esta forma, la aplicacin puede quedar integrada como servicio dentro del sistema operativo
para ser manejada con sus utilidades especficas.

1.3.1. Gestin como servicio de Windows


Es posible gestionar HydraDICOM como un servicio de Windows. Para gestionar HydraDICOM de
esta forma, nicamente es necesario ejecutar con privilegios de administrador el script
install_service.bat localizado en el directorio bin\ de la ruta de instalacin.
El servicio se llama HydraDICOM+JBoss Application Server 4.2 (HDJBAS42 de forma
abreviada).

Para desinstalar el servicio, ejecute como administrador el script uninstall_service.bat que se


encuentra tambin en el directorio bin\ de la ruta de instalacin.

1.4. Licencia
HydraDICOM proporciona una licencia de demostracin durante 30 das. Pasado ese tiempo, el
sistema dejar de aceptar conexiones.
Puede reemplazar la licencia en cualquier momento mediante la interfaz de gestin HydraManager4:
Automticamente cuando la licencia temporal expira o bien a travs del men (Ayuda Activar
licencia comercial).

4 Vea ms informacin sobre su ejecucin y uso en la seccin dedicada: Uso de HydraManager.


contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM

Para activar la licencia de HydraDICOM mediante el asistente de HydraManager, copie el nmero


de serie que recibi al comprar la licencia en la entrada de texto.
a) Si dispone de conexin directa a internet, pulse el botn Activar de la seccin Activacin
en lnea5. La licencia se activar de forma inmediata.
b) En cualquier otro caso, la seccin Activacin por correo electrnico permite activar el
sistema mediante una sencilla serie de pasos:
1. Genere el archivo de activacin (archivo .act), pulsando el botn Generar archivo....
Aparecer una ventana de dilogo que le permitir especificar la ubicacin local y
nombre de fichero donde se almacenar. Para finalizar, pulse Guardar.
2. Enve el fichero de activacin generado anteriormente como adjunto por correo
electrnico a activation@metaemotion.com.
3. Como respuesta al correo anterior, recibir un fichero adjunto (archivo .lic) que contiene
su licencia activada. Almacene en su disco local dicho fichero y pulse el botn Cargar
archivo... del dilogo que aparecer. Seleccione el archivo .lic que guard en su disco
local y pulse Aceptar. La licencia se activar de forma inmediata.
Nota: La actualizacin de licencia garantiza la preservacin de todos sus datos y configuracin. La
efectividad es inmediata: No es necesario reiniciar la aplicacin ni el servicio JBoss.
5 Por favor, revise que su configuracin de internet es correcta. Si necesita ayuda para configurar un servicio proxy,
revise la seccin Error en la activacin de licencia por internet.
contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM

1.5. Actualizacin desde versiones anteriores


Antes de actualizar HydraDICOM desde una versin anterior, es recomendable hacer una copia de
seguridad de la configuracin.
Si actualiz la versin reemplazando el archivo .war en su servidor de aplicaciones, use
HydraManager para asegurar que su grafo es correcto, aplique algn cambio y vuelva a desplegar la
configuracin.

1.6. Errores
HydraDICOM es altamente tolerable frente a fallos. No obstante, existen situaciones que generan
errores en el sistema. A continuacin presentamos una breve gua de solucin de errores tpicos:

1.6.1 Errores de inicializacin de los servicios.


Si algn servicio de HydraDICOM no inicia, en la mayora de los casos puede ser debido a que los
puertos TCP necesarios estn en uso. Para solucionarlo, puede cambiarlos en cualquier momento
desde el gestor HydraManager.

1.6.2 Error en la activacin de licencia por internet.


Si no dispone de conexin directa a internet pero dispone de servicio de Proxy HTTP en su entorno,
puede configurarlo en Java siguiendo los pasos descritos en la siguiente pgina de documentacin
de Java:
http://www.java.com/es/download/help/proxy_setup.xml

1.7. Cambio de contrasea


En el caso de que el usuario se olvide la contrasea actual, puede resetearla editando el fichero:
jboss-4.2.3.GA\server\default\data\HydraDICOM\hydradicom.properties

contacto@metaemotion.com

Hydradicom.com

Manual de usuario de HydraDICOM

2. HydraManager
HydraManager es la interfaz de usuario de configuracin y monitorizacin de HydraDICOM. Es
una interfaz desarrollada con la tecnologa webstart de Java. Se puede acceder a la misma abriendo
en un navegador web la direccin6:
http://host_hydra:8080/HydraDICOM

Pulsando sobre Launch the application aparecer un dilogo de solicitud de contrasea de acceso
como el siguiente:

Nota: La contrasea por defecto es admin.


Al escribir la contrasea y pulsar Login, aparecer la ventana principal de la aplicacin:

6 Recuerde que host_hydra debe ser la direccin IP o nombre de Host de la mquina donde instal HydraDICOM (o
localhost si se realiza todo sobre la misma mquina).
contacto@metaemotion.com

10

Hydradicom.com

Manual de usuario de HydraDICOM

Pulsando el botn
integracin:

, el modo cambia a edicin, donde ya es posible editar los flujos de

2.1 Barra de men


En la parte superior se encuentra la barra de men y la barra de herramientas. La barra de men
tiene las siguientes opciones:

Archivo
Recargar config: Descarta los cambios actuales y vuelve a recargar la configuracin
presente en el servidor.
Importar desde PNG incrustado: Importa todo el rea de trabajo a partir de una

contacto@metaemotion.com

11

Hydradicom.com

Manual de usuario de HydraDICOM


imagen PNG (visible por cualquier editor de imgenes) que tiene incrustado un fichero
XML con los datos del grafo.
Aadir desde PNG incrustado: Aade al espacio de trabajo actual el rea de trabajo
almacenado en una imagen PNG (visible por cualquier editor de imgenes) que tiene
incrustado un fichero XML con los datos del grafo. Resuelve la colisin de
identificadores aadiendo un sufijo a los identificadores repetidos, y la colisin de
puertos estableciendo el puerto libre ms cercano.
Exportar como PNG incrustado: Exporta todo el rea de trabajo como una imagen
PNG (visible por cualquier editor de imgenes) que tiene incrustado un fichero XML
con los datos del grafo.
Configurar pgina: Permite configurar la pgina del grafo. Esta configuracin no slo
sirve para cambiar la visualizacin de la misma sino se aplica tambin en la
configuracin de impresin.
Imprimir: Imprime el grafo actual.
Salir: Sale de HydraManager..

Editar
Deshacer, Rehacer.
Cortar, Copiar y Pegar.
Borrar
Seleccionar todo y seleccionar nada.

Modo
Modo de edicin: En este modo es posible editar el grafo actual.
Modo de ejecucin: En este modo se ejecuta el grafo previamente editado. En este
modo no es posible editar ningn componente.

Herramientas
Cambio de contrasea: Permite cambiar la contrasea de acceso a HydraManager.
Configuracin: Permite establecer comportamientos de HydraDICOM (cach). Para
ms informacin, vea la seccin configuracin.

Vista: Opciones del zoom

Ayuda
Activar licencia comercial...: Permite introducir el cdigo de licencia y activar la
versin en funcionamiento.
Acerca de HydraManager: Muestra informacin de la versin actual incluyendo la
licencia.

2.2 Biblioteca

contacto@metaemotion.com

12

Hydradicom.com

Manual de usuario de HydraDICOM


En la parte izquierda, se encuentra el panel de biblioteca en este panel se muestran todos los
posibles componentes con los que se pueden interactuar. En la parte derecha al seleccionar un
componente se muestran sus propiedades. Adicionalmente, al seleccionar un componente, puede ver
un resumen sobre sus caractersticas y el significado de sus parmetros en la pestaa doc.
A continuacin se describen cada uno de los componentes y sus propiedades.

2.2.1 Componentes de entrada


Los componentes de entrada son los componentes que generan operaciones en el sistema.
2.2.1.1 DICOM input

Este componente de entrada establece en el sistema una fachada DICOM 3.0 con soporte a las
primitivas: ECHO-SCP, FIND-SCP, GET-SCP y STORE-SCP.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

AET: Application Entity Title es un parmetro necesario para configurar los clientes que
realizarn consultas sobre esta interfaz.

Puerto: puerto en el que se desplegar el componente de entrada, slo es posible desplegar


un servicio por puerto.

Reglas de compresin: La primera regla en concordar cuando se recibe una imagen sin
comprimir define su compresin. Permite establecer mtodos de compresin dependiendo
del AE title que invoca y el que es invocado en la peticin de asociacin y en valores de los
atributos de una imgen en particular(por ejemplo. Atributos para las condiciones de
compresin).
Sintaxis:
<reglas de compresin> := (<regla de compresin> <EOL>)+
<regla de compresin> := [<condiciones>] <compresin>
<condiciones> := '[' <condicin> {',' <condicin>} ']'
<condicin> := <atributo> ['!']'=' <valor> {'|' <valor>}
<atributo> := 'calling' | 'called' | 'pmi' | 'cuid' | 'imgtype' | 'bodypart'
<compresin> := 'NONE' | 'JPLL' | 'JLSL' | 'J2KR' | ('JPLY' ['(' <calidad> ':'
<descripcin> ':' <ratio> ')'])
<calidad> := calidad de compresin utilizado entre 0.0 y 1.0, 0.75 por defecto.
<descripcin> := descripcin almacenada en el atributo Derivation Description
0008,2111), "JPEG Lossy Compression with quality=0.75" by default.
<ratio> := ratio de compresin estimado, que se almacena en el atributo Lossy Image
Compression Ratio (0028,2112), 5.0 por defecto.
Modos de compresin soportados:

contacto@metaemotion.com

13

Hydradicom.com

Manual de usuario de HydraDICOM


NONE - no aplicar compresin.
JPLL - JPEG Lossless
JLSL - JPEG-LS Lossless
J2KR - JPEG 2000 Lossless
JPLY - JPEG Lossy
Atributos para las condiciones de compresin:
calling - AE title invocante en la A-Associate RQ de la Storage SCU.
called - AE title invocado en la A-Associate RQ de la Storage SCU.
pmi - Photometric Interpretation (0028,0004) de la imagen.
cuid - SOP Class UID (0008,0016) de la imagen.
imgtype - Image Type (0008,0008) de la imagen.
bodypart - Body Part Examined (0018,0015) de la imagen.

Lista de pares AET e IP admitidos. Con esta lista es posible establecer una lista de AET/IP
admitidas. El formato para especificarlos en AET@IP.
Este campo permite usar comodines, por ejemplo: GINKGO_*@192.168.*.*. Si esta lista se
deja vaca, no se admitir ninguna conexin.

Tabla de AETs. Esta lista es necesaria para registrar la ubicacin y propiedades de las
estaciones que sern destinos en operaciones C-MOVE7.
La lista de AETs admite los mismo parmetros que los destinos:
AET: Aet del destino.
Hostname: Direccin IP o nombre de host del destino.
Puerto: Puerto donde escucha el el destino.
Local AET: AET que usar HydraDICOM para identificarse en el destino.
Username (Opcional): Nombre del usuario para autenticacin en el destino.
Password (Opcional): Contrasea del usuario para autenticacin en el destino.

El componente DICOM input es necesario para interconectar el resto de componentes, pues acta
como router multicast.
2.2.1.2 Servicio Web C-FIND (SOAP)

Implementa un servicio Web de consulta para realizar consultas mediante operaciones C-FIND.
Esta interfaz es una forma ideal de resolver los problemas de integracin que implican realizar
consultas en varios PACS sin necesidad de entrar en la complejidad de implementar el protocolo
7 La operacin C-MOVE usa exclusivamente el AET para identificar destinos, por lo que es necesario que el servidor
conozca la direccin y puerto al que corresponde dicho destino para poderle transmitir el estudio.
contacto@metaemotion.com

14

Hydradicom.com

Manual de usuario de HydraDICOM


DICOM.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Puerto: puerto en el que se desplegar el componente de entrada.

Ruta: ruta dentro del servidor en la que se desplegar el servicio web.

WSDL: es la ruta del WSDL, se construye automticamente a partir de los parmetros


definidos anteriormente.

Lista de IPs admitidas. Con esta lista es posible establecer una lista de IPs admitidas. Este
campo permite usar comodines, por ejemplo: 192.168.*.*. Si esta lista se deja vaca no se
admitir ninguna conexin.

2.2.1.3 Servicio WADO (http)

Implementa un servicio WADO para poder recuperar imgenes, gracias a este componente se podr
acceder a pruebas mdicas sin entrar en la complejidad del protocolo DICOM, las consultas WADO
devuelven ficheros de imagen en formatos convencionales.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Puerto: puerto en el que se desplegar el componente de entrada.

Ruta: ruta dentro del servidor en la que se desplegar el servicio WADO.

Pre check cache: comprueba antes de devolver el fichero si sigue existiendo en el servidor
PACS, implica hacer siempre un C-FIND antes de devolver el fichero aunque ste se
encuentre en cache.

Precachear serie: cuando se solicita una imagen que no est en cach, se obtiene la serie
completa para futuras peticiones.

Cachear los ficheros JPG solicitados: Cachea cada solicitud de fichero JPG. Las
solicitudes contemplan ajustes de visualizacin, como tamao, radiolucencia... etc.

Num. ficheros cacheados: Nmero de ficheros JPG que se mantendrn cacheados. La cache
reemplaza los ficheros ms antiguos que no estn en uso.

Lista de IPs admitidas. Con esta lista es posible establecer una lista de IPs admitidas. Este
campo permite usar comodines, por ejemplo: 192.168.*.*. Si esta lista se deja vaca no se
admitir ninguna conexin.

Nota: El Servicio WADO debe estar siempre emparejado con un componente DICOM Input,
compartiendo el mismo router.
2.2.1.4 Servicio de Dicomizacin (http)

Implementa un servicio de dicomizacin para convertir a formato DICOM imgenes y documentos.

contacto@metaemotion.com

15

Hydradicom.com

Manual de usuario de HydraDICOM


Este componente permite vincular nuevas pruebas mdicas sin entrar en la complejidad del
protocolo y formato DICOM. El componente de dicomizacin inicia un servicio HTTP que admite
los datos de la prueba y el fichero que ser vinculado (como pixel-data o como encapsulated
document) por mtodo POST multipart/form-data.
Este servicio est diseado para ser vinculado desde una pgina web. Una vez enviados los datos a
la URL del servicio, el sistema generar una fichero DICOM y lo transmitir mediante una
operacin C-STORE que fluir hacia sus destinos.
Para facilitar las pruebas y la puesta en marcha de la integracin, HydraDICOM proporciona una
pgina web esttica de ejemplo en la url:
http://host_hydra:8080/HydraDICOM/dicomization_form.html
La pgina de ejemplo enva a una direccin fija:
http://localhost:8081/dicomization
donde deber haberse configurado y desplegado adecuadamente el componente.
Parmetros de configuracin del componente en HydraManager:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Puerto: puerto en el que se desplegar el componente de entrada.

Ruta: ruta dentro del servidor en la que se desplegar el servicio de dicomizacin.

Lista de IPs admitidas. Con esta lista es posible establecer una lista de IPs admitidas. Este
campo permite usar comodines, por ejemplo: 192.168.*.*. Si esta lista se deja vaca no se
admitir ninguna conexin.

2.2.1.4.1 Integracin del servicio de dicomizacin

Para integrar el servicio de dicomizacin en otro sistema, es necesario publicar una pgina web en
el sistema o bien desarrollar un servicio web que haga una solicitud HTTP POST.
Para integrar el servicio por web, puede basarse en la pgina de ejemplo como plantilla. Esta
contiene:

contacto@metaemotion.com

16

Hydradicom.com

Manual de usuario de HydraDICOM

Los datos demogrficos del paciente, estudio y serie, se especifican mediante la notacin:
Tag:Nombre_del_Tag
donde Nombre_del_tag es el nombre corto del tag en DICOM. Por ejemplo:
Tag:StudyInstanceUID
Tag:PatientID
...

La Plantilla DICOM IOD es un fichero plantilla que debe ser provisto para facilitar colecciones de
tags repetitivos o para hacer dicomizaciones formales.
Puede especificarse un fichero DICOM IOD ubicado en una URL (HydraDICOM provee varias) o
mediante un fichero local.
Las plantillas DICOM IOD debe ser ficheros DICOM en formato XML bajo la especificacin de la
utilidad dcm4che2.
Para generar ficheros DICOM IOD, puede usar la utilidad dcm2xml del toolkit dcm4che2, editarlos
y almacenarlos en un repositorio accesible por HTTP o bien enviarlos en cada dicomizacin.
El botn Examinar... del apartado Imagen permite seleccionar un fichero local para usarlo como
contenido del fichero DICOM (pixeldata o encapsulated document).
El botn Enviar, transmite los datos al conector mediante una solicitud HTTP POST en las
condiciones requeridas.
2.2.1.4.2 Parmetros HTTP del servicio de dicomizacin

contacto@metaemotion.com

17

Hydradicom.com

Manual de usuario de HydraDICOM


Opcional

Nombre

Valores
permitidos

Descripcin

Tag:*

iod_location

file
url
auto

Dependiente de
iod_location

url_iod

URL de la ubicacin del IOD.

Dependiente de
iod_location

file_iod

Fichero IOD.

Dependiente de
IOD.

payload

Valor de tag dicom en nivel principal (no


perteneciente a secuencia).
Ubicacin del IOD (Por defecto: auto).

Mime-type
Fichero con el contenido que ser dicomizado.
oblicatorio con
valores:
image/jpeg
image/jpg
video/mpeg8
video/mpeg2
application/pdf
text/xml

Nota: El servicio de dicomizacin generar automticamente los atributos obligatorios que no sean
facilitados, como los StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID y SOPClassUID.
2.2.1.5 Servicio de lectura de ficheros

Implementa un servicio que lee ficheros DICOM almacenados en una carpeta accesible desde el
sistema de ficheros de la mquina.
Este componente lee los ficheros almacenados en un directorio del sistema y los introduce en un
flujo de integracin emulando una peticin C-Store.
Algunos escenarios donde este componente es especialmente interesante es en escenarios de
migracin de datos o para dotar de capacidad de almacenamiento en el PACS a modalidades que
carecen de esta caracterstica. Adems combinado con el componente de parcheo y escritura en
ficheros se pueden implementar de manera sencilla flujos de anonimizacin.
Parmetros de configuracin del componente en HydraManager:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Carpeta de entrada: carpeta de donde se leen los ficheros a procesar.

Carpeta de trabajo: carpeta donde se mueven los ficheros que se estn procesando.

8 El nico formato de video permitido es MPEG2, independientemente de que se transmita con tipo mime
video/mpeg.
contacto@metaemotion.com

18

Hydradicom.com

Manual de usuario de HydraDICOM

Carpeta de error: carpeta donde se mueven los ficheros que han provocado algn error.

Backup: Opcionalmente el usuario puede establecer que los ficheros procesados


correctamente se copien a la carpeta de backup.

Patrn: patrn que se seguir al escribir los ficheros en las carpetas intermeidas y de
backup. Para configurar este parmetro se utiliza el siguiente formulario en el que se pueden
usar las expresiones ms comunes:

Frecuencia de muestreo: la frecuencia con la que el proceso de lectura consulta si hay


ficheros nuevos en la carpeta de entrada.

Edad mnima de los ficheros: edad mnima que han de tener los ficheros para ser
procesados (as se evita procesar ficheros que se estn escribiendo en ese momento).

2.2.1.5.1 Lgica del servicio de lectura de ficheros

El servicio de lectura de ficheros funciona de la siguiente manera:


1. Lee los ficheros que se escriben en <carpeta de entrada> o en cualquiera de sus subcarpetas.
2. Mueve estos ficheros a la carpeta <carpeta de trabajo>.
3. Genera una peticin C-Store y la enva al flujo al que est conectado.
4. En caso de error mueve el fichero que ha provocado el error a la <carpeta de error>.
5. En caso de que todo haya ido bien, opcionalmente se puede seleccionar que mueva el
fichero a la <carpeta de backup>. Se puede seleccionar el formato de los nombres de los
ficheros utilizando propiedades de fecha y hora.

2.2.2 Componentes de procesamiento


Los componentes de procesamiento son elementos interconectables en cualquier punto intermedio
del flujo que proporcionan etapas de procesamiento extra como filtrado, modificacin o cualquier
contacto@metaemotion.com

19

Hydradicom.com

Manual de usuario de HydraDICOM


otra operacin especial sobre las transacciones de comunicacin.
2.2.2.1 Scripting

Propociona acceso al motor de scripting del sistema, permitiendo escribir programas en lenguaje
Groovy que se invocan cuando una transaccin fluye a travs del conector.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

El cdigo fuente puede ser escrito con el sistema en modo edicin pulsando el botn Editar.

La ventana de edicin de cdigo contempla 3 mbitos de scripting. Cada uno de ellos queda
referido en su pestaa correspondiente :

Aceptacin: Script de condicin de aceptacin de la operacin. Si una operacin es


rechazada, queda descartada y no continuar su procesamiento en ningn paso posterior ni
ser enviada a los destinos conectados.
Este script debe devolver:
true para los mensajes aceptados.
false si la transaccin es rechazada.

Transformacin de entrada: Script que permite la modificacin de la operacin. Aunque


tambin es posible la modificacin del mensaje en la etapa de filtrado, es ms adecuado
hacerlo en esta etapa.

contacto@metaemotion.com

20

Hydradicom.com

Manual de usuario de HydraDICOM


La etapa de transformacin de entrada se procesa inmediatamente despus de que la etapa de
aceptacin haya clasificado la operacin como aceptada.
Este script debe devolver:
Una copia del payload (objeto del mensaje de operacin, tambin llamado transaccin
DICOM) transformado, o bien el original en el caso de no realizar ningn cambio.

Transformacin de respuesta: Script que permite la modificacin de la operacin.


Esta etapa se procesa una vez se ha enviado la transaccin al destino y su funcin es permitir
modificar la respuesta (resultado).
Este script debe devolver:
Una copia del payload (objeto de respuesta devuelta por el destino) o bien el original
en el caso de no realizar ningn cambio.

Para facilitar la programacin de scripts y minimizar los fallos, la ventana de edicin de cdigo
soporta:

Coloreado automtico del cdigo para resaltar la sintaxis.

Validacin lxica y semntica del cdigo:


Manualmente mediante el botn

Automticamente al cerrar la ventana pulsando Aceptar (hacer efectivos los cambios).

Auto-completado de cdigo, mediante el acelerador de teclado CTRL+Espacio, que


muestra los objetos exportados al mbito del script (payload, log...) as como un breve
conjunto de snippets de cdigo.

Biblioteca de cdigo, situada en la parte derecha de la pantalla, contiene fragmentos de


cdigo que resuelven situaciones habituales en la edicin de scripts. Para poder utilizarlos
se deber arrastrar la entrada de la biblioteca y soltarla en el editor de cdigo.

2.2.2.2 Inspector

Este componente almacena temporalmente los ficheros DICOM que fluyen a travs de l. El
objetivo principal de este componente es la monitorizacin o depuracin de flujos.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Nm. mximo de objetos: Nmero mximo de objetos almacenados. La estrategia de


almacenamiento es una cola circula, de forma que los objetos ms antiguos son
sobreescritos.

Al usar este componente, en modo ejecucin ver una nueva pestaa llamada Inspeccin.

contacto@metaemotion.com

21

Hydradicom.com

Manual de usuario de HydraDICOM


La tabla muestra en tiempo real los objetos que son almacenados por el componente. Puede hacer
doble click sobre cualquiera de ellos para visualizar el contenido de forma avanzada.

El Visor de TAGS Dicom, permite la visualizacin avanzada del contenido. Esta ventana tiene 4
apartados:

El Campo de texto de filtrado (arriba) permite filtrar los tags DICOM del contenido que
contienen la cadena que est siendo escrita.

La tabla de grupos de tags (superior-izquierda) permite filtrar los tags que pertenecen al
grupo seleccionado.

La tabla de tags del contenido (derecha) muestra los tags DICOM que contiene el fichero.

Con el botn descargar se puede obtener el fichero DCM original.

2.2.2.3 Patching

Este componente se utiliza para modificar de una forma cmoda las peticiones que fluyen por el
punto en el que est conectado. Se pueden realizar de forma sencilla tareas que requeriran mayor
formacin de ser implementadas directamente usando scripting.
El componente define una serie de parches que son ejecutados secuencialmente, desde el formulario
de configuracin del componente estn disponibles las siguientes opciones:

contacto@metaemotion.com

22

Hydradicom.com

Manual de usuario de HydraDICOM

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Parches: Parches configurados en este componente, se pueden aadir, eliminar, editar o


subir y bajar, ya que los parches se ejecutan siguiendo el orden de arriba hacia abajo.

La configuracin de cada uno de los parches se realiza utilizando el siguiente formulario:

Los parmetros a configurar son los siguientes:

Descripcin: descripcin de este parche que aparecer en el formulario de configuracin del


componente.

contacto@metaemotion.com

23

Hydradicom.com

Manual de usuario de HydraDICOM

Aplicar a: especifica a qu peticiones se desea aplicar el parcheo, para los tipos no


seleccionados no se aplicar ningn cambio.

mbito: dnde se desea aplicar los cambios, se puede elegir entre el mensaje y los objetos
asociados al mensaje, por ejemplo se puede parchear una peticin STORE_RQ sin modificar
el fichero asociado, o modificar el fichero sin tocar la peticin. Esta flexibilidad es muy til
para modificar ficheros creados errneamente por una modalidad.
Atencin, si se selecciona Aplicar a objetos se cargarn en memoria los objetos
asociados incluyendo el pixel data en caso de que lo contenga. Este proceso consumir
mucha memoria cuando los ficheros sean imgenes grandes.

Parches: cada una de las modificaciones realizadas por este parche en particular, cada
parche se compone de los siguientes parmetros:
Tags: tags sobre los que se aplicarn los cambios (no se utiliza si la accin es Script).
Accin: accin que se desea aplicar:
Modificar: aade o modifica el tag especificado en Tags, con el valor escrito en
Expresin.
Eliminar: elimina el tag seleccionado, ignora el valor del campo Expresin.
Expresin: ejecuta el script groovy especificado en expresin que debe de devolver
un valor, y asigna ese valor devuelto al tag especificado en Tags.
Script: ejecuta el script especificado, ignora el campo Tags, este caso es equivalente
al conector de scripting, con la ventaja de que filtra las peticiones a las que se va a
aplicar mediante los campos Aplicar a y mbito.
Expresin: expresin utilizada para dar valor al campo Tags.

Tanto la edicin de expresiones como de scripts se realiza utilizando el mismo formulario que el
descrito en el conector de scripting.
2.2.2.4 PACS/Proxy

Este componente cachea temporalmente los estudios que son accedidos a travs de l, indexa sus
contenidos y los almacena en una cach. El tiempo de permanencia en cach es configurable.
El nivel de operacin de la cach es por debajo de estudio, de forma que una vez cachea un estudio,
el componente es capaz de responder de forma autnoma a cualquier operacin de tipo
Query/Retrieve a niveles de SERIES e IMAGE. Esto dota no slo de ventajas respecto a la
minimizacin de ancho de banda y procesamiento por el PACS destino, sino que adems permite
satisfacer importantes limitaciones presentes en algunos PACS (que no operan a niveles por debajo
de estudio, lo que les impide hacer uso del estndar WADO). Gracias a este componente, es posible
dotar a los PACS ya implantados de un nivel de conformidad muy alto sin requerir desarrollo o
actualizacin.
Parmetros:

ID: Identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

contacto@metaemotion.com

24

Hydradicom.com

Manual de usuario de HydraDICOM

TTL: (Time to Live) Tiempo de vida del estudio en cach (en segundos).

Mtodo: Mtodo de obtencin del estudio (GET o MOVE) en destino. Actualmente, esta
opcin es ignorada ya que el nico mtodo soportado en destinos es MOVE.

Nota: En situaciones de carga extrema (espacio disponible por debajo de 1GB) , el sistema borrar
el 10% de los estudios no accedidos cacheados por este componente aunque no hayan expirado.

2.2.3 Conectores de salida


Los componentes de salida son los componentes con los que HydraDICOM se comunica con otros
servicios PACS.
2.2.3.1 DICOM Output

Conector de salida DICOM 3.0 con soporte de primitivas:

ECHO-SCU: permite probar la conectividad con el PACS configurado.

FIND-SCU: permite realizar consultas sobre el PACS.

MOVE-SCU: permite obtener ficheros de un servidor PACS.

STORE-SCP/SCU: es el servicio de recepcin/envo de ficheros desde/hacia un servidor


PACS.

Cada interfaz de salida puede tener su propia AET, la cual es necesario registrar en los PACS
destino. Tambin permite establecer el negociado de autenticacin basada en usuario y contrasea.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

AET Local: Application Entity Title con el que HydraDICOM se identifica cuando se
va a conectar al PACS destino.

AET: Application Entity Title del PACS al que se va a conectar HydraDICOM.

Host: host donde est desplegado el PACS de destino.

Puerto: puerto del PACS destino.

Autenticacin: opcionalmente se pueden especificar el usuario y contrasea que


HydraDICOM utilizar al realizar peticiones al PACS.

2.2.3.2 File writter

Este conector de salida implementa un STORE-SCP que almacena las peticiones que recibe en una
ubicacin del sistema de ficheros estableciendo como nombre de fichero un patrn establecido. Este
conector permite mltiples posibilidades es til en procesos de migracin y en flujos de
anonimizacin, por ejemplo un flujo en el que los ficheros recibidos se anonimicen mediante el
componente de parcheo y se almacenen en una carpeta con una estructura de directorios definida.
Los parmetros a configurar son los siguientes:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en

contacto@metaemotion.com

25

Hydradicom.com

Manual de usuario de HydraDICOM


cada despliegue.

Carpeta: carpeta de salida donde se almacenarn los ficheros.

Patrn: patrn utilizado para almacenar los ficheros, se pueden incluir subcarpetas que se
crearn cuando sea necesario. Por ejemplo es posible definir una estructura que como primer
nivel tenga la fecha de recepcin y despus subcarpetas por paciente y estudio. Para
configurar el patrn de forma sencilla se dispone del siguiente formulario:

por ejemplo:
#[function:datestamp:dd-MM-yy]\{PatientID}\{StudyInstanceUID}\{SeriesInstanceUID}\
{SOPInstanceUID}
esta expresin almacenara los ficheros en una carpeta con la fecha de recepcin y despus
subcarpetas por identificador de paciente, study instance uid, series instance uid y por ltimo
el nombre del fichero que sera su sop instance uid.
2.2.3.3 Componente de salida Alfresco

Se trata de un componente que implementa las primitivas FIND-SCP y STORE-SCP utilizando el


API de acceso remoto de Alfresco.
Mediante este componente se puede acceder a contenidos DICOM almacenados en un servidor de
contenidos Alfresco mediante una interface 100% DICOM. Requiere que los ficheros almacenados
contengan una serie de metadatos DICOM que facilite su bsqueda y obtencin.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

URL: url en la que se encuentra desplegado la interfaz web de Alfresco.

contacto@metaemotion.com

26

Hydradicom.com

Manual de usuario de HydraDICOM

2.2.4 Componentes de enrutado


Los componentes de enrutado son los componentes que permiten que los mensajes se propaguen a
ms de un destino. Cada componente de enrutado implementa una estrategia diferente de
distribucin de los mensajes.
2.2.4.1 Enrutador broadcast secuencial

Cada mensaje recibido por la entrada se manda secuencialmente a cada uno de los destinos a los
que est conectado, el componente espera a que el destino termine para pasar el mensaje al
siguiente destino.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

2.2.4.2 Enrutador broadcast paralelo

Cada mensaje recibido por la entrada se manda en paralelo a cada uno de los destinos a los que est
conectado y queda a la espera de que los destinos terminen el procesamiento.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Timeout (ms): tiempo mximo de espera a que los destinos terminen, si el timeout se agota
no se procesar la respuesta de la salida que no haya terminado el procesamiento.

2.2.4.3 Enrutador round robin

El router itera en una lista de destinos utilizando el algoritmo round robin: el primer mensaje
recibido se enruta al primer destino, el segundo al segundo y as sucesivamente. Cuando un mensaje
se ha enrutado a cada hijo el siguiente se enruta al primer destino comenzando de nuevo la
iteracin.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

2.2.4.4 Enrutador con scripting

Es el enrutador ms verstil ya que permite implementar mediante scripting la poltica de enrutado


que se prefiera.
Parmetros:

ID: identificador nico del componente en el sistema, es un campo obligatorio y nico en


cada despliegue.

Script: el script es una funcin que devuelve o bien una cadena de texto o una lista de
cadenas. Para su edicin se dispone del mismo formulario que el utilizado para editar el
componente de scripting. Las cadenas han de contener la direccin de uno de los nodos a los
que se encuentra conectado el router. Por ejemplo si el router est conectado al nodo

contacto@metaemotion.com

27

Hydradicom.com

Manual de usuario de HydraDICOM


Nodo1 y queremos que siempre se enrute a este nodo habra que escribir:
return vm://Nodo1;
o si se prefiere utilizar el helper que recibe como parmetro el identificador del componente:
return scriptHelper.getRoute(Nodo1);
En el caso en que se devuelva una lista de cadenas (List<String>) el router invocar
secuencialmente a los nodos contenidos en esta lista al estilo del router broadcast secuencial.

contacto@metaemotion.com

28

Hydradicom.com

Manual de usuario de HydraDICOM

3. Modos de funcionamiento
La consola de HydraManager se puede utilizar en dos modos de funcionamiento: el de edicin y el
de ejecucin.

3.1 Modo de edicin


En el modo de edicin se configura la topologa de los componentes que se quieren desplegar en el
sistema.
Se debern arrastrar los elementos desde la biblioteca a la zona de edicin para, a continuacin
configurar los parmetros de cada componente y finalmente conectarlos entre ellos.

3.2 Modo de ejecucin


El modo de ejecucin est pensado para monitorizar el comportamiento de Hydra, en este modo de
ejecucin se permite monitorizar cada uno de los componentes desplegados.
En el modo de ejecucin no es posible configurar los parmetros de los componentes, al hacer clic
en cada uno de los nodos se mostrar en la barra de la derecha la configuracin del nodo en
cuestin.
En modo ejecucin, en el grafo aparecer una etiqueta en los cada nodo que indica el nmero de
solicitudes que estn siendo atendidas simultneamente en ese punto.

contacto@metaemotion.com

29

Hydradicom.com

Manual de usuario de HydraDICOM

4. Men de herramientas

4.1 Configuracin
Esta opcin permite configurar el comportamiento de HydraDICOM.

4.1.1 Cache
HydraManager permite configurar la cach de HydraDICOM para acelerar la disponibilidad de las
imgenes obtenidas (Actualmente slo para obtenciones WADO).
Para ello, HydraDICOM copia los ficheros DICOM recibidos en un directorio, y en el caso de
volver a solicitar uno de ellos, lo entregar directamente sin volver a consultar al PACS de donde
los obtuvo.
La cach de HydraDICOM es persistente, de forma que los datos se mantendrn aunque se reinicie
el servicio.
La estrategia de gestin interna de la cach consiste en mantener un tamao mnimo y si se supera
este volumen, eliminar los estudios que no estn siendo usados en orden de su ltimo acceso.
Una vez alcanzado el tamao mnimo, el resto de ficheros permanecern en la cach.
La siguiente captura muestra la parametrizacin de la cach:

Tamao base: Permite configurar el tamao mnimo de la cach, en MegaBytes.

Tamao mximo: Permite configurar el tamao mximo de referencia de la cach. Es usado


slamente para representar grficamente la proporcin de uso de la cach.

Periodo de limpieza: Frecuencia (en segundos) de la operacin de limpieza de la cach,

contacto@metaemotion.com

30

Hydradicom.com

Manual de usuario de HydraDICOM


para borrar los estudios ms antiguos que no estn siendo usados.

Estado: Informacin sobre el estado de la cach.


Barra de progreso de uso: Visualizacin del porcentaje de uso. Al detener el cursor de
ratn sobre ella, se muestra ms informacin (tamao en MB).
Aciertos: Nmero de aciertos de cach. Es el nmero de veces que se ha devuelto un
fichero cacheado, evitando su obtencin del PACS.
Fallos: Nmero de veces que se ha devuelto un fichero que no estaba cacheado.
Purgar cach: Borra completamente los ficheros cacheados, estn en uso o no. Esta
operacin detiene el servicio momentneamente y provoca que la cancelacin de las
operaciones en curso.
Actualizar: Refrescar de nuevo las estadsticas de la cache (Porcentaje de uso, nmero
de aciertos y de fallos)

Cerrar: Cierra la ventana de configuracin sin guardar cambios.

Guardar cambios: Guarda los cambios en el servidor. Esta operacin detiene


momentneamente el servicio y provoca la cancelacin de las operaciones en curso.

4.2 Historial de eventos


HydraManager permite configurar la frecuencia de borrado y la antigedad mxima de los registros
de eventos del servicio como puede apreciarse en la siguiente captura:

Historial de eventos en das: Das que permanecen los eventos en el registro antes de que
sean borrados.

Periodo en segundos entre invocaciones del proceso de purga: Frecuencia con que el

contacto@metaemotion.com

31

Hydradicom.com

Manual de usuario de HydraDICOM


planificador de borrado comprueba y borra eventos antiguos.

4.3 SMTP server


Esta seccin permite configurar los parmetros del servidor de correo SMTP para enviar
notificaciones a los destinatarios (si procede):

Nombre del servidor: IP o DNS del servidor de correo.

Puerto: Puerto del servicio SMTP.

Nombre de usuario: Nombre del usuario de autenticacin (si procede).

Contrasea: Contrasea del usuario de autenticacin (si procede).

4.4 Alertas
En esta seccin, puede configurar el envo de correos electrnicos de alerta a partir de unas reglas.

contacto@metaemotion.com

32

Hydradicom.com

Manual de usuario de HydraDICOM

En la parte superior, debe establecer una etiqueta para cada alerta. Pulse el botn Aadir de la parte
superior derecha.
Puede cambiar el nombre de la alerta haciendo doble click sobre su titulo, escribiendo el nuevo
nombre y pulsando enter.
Al seleccionar una alerta, puede configurar:

Componentes: Sobre qu componentes estar habilitada (a la izquierda en la seccin


configuracin).

Operaciones: Lista de operaciones para al que estar habilitada (a la derecha en la seccin


configuracin).

De: Remitente del mensaje.

Para: Destinatario del mensaje.

Asunto: Asunto del mensaje.

Prioridad: Nivel mnimo de la prioridad ocasionada (INFO es el ms bajo y ERROR el ms


alto).

4.5 Codificacin de imgenes


En esta seccin se codifica el grado de paralelismo del proceso de transcodificacin de imgenes,
este proceso ha de cargar toda la imagen en memoria, por ello es necesario controlar su grado de
paralelismo para evitar fallos por falta de memoria.

contacto@metaemotion.com

33

Hydradicom.com

Manual de usuario de HydraDICOM

contacto@metaemotion.com

34

Hydradicom.com

Manual de usuario de HydraDICOM

5. Ejemplos de funcionamiento
Algunos ejemplos tpicos de funcionamiento de HydraDICOM.
5.1 Acceso Multipacs
Establece un proxy DICOM que permite acceder a varios PACS con un nica interfaz DICOM.

5.2 Proxy DICOM


Establece un proxy DICOM que permite hacer consultas C-FIND mediante WebServices y WADO.

5.3 PACS/Proxy DICOM


Establece un proxy DICOM inteligente que permite ahorrar ancho de banda y procesamiento. Cada
vez que se accede a un estudio, este se recupera y permanece en cach. Las operaciones DICOM
subsiguientes son satisfechas directamente por el componente en vez de por el destino, aliviando a
este de carga de procesamiento y ancho de banda en la red.

contacto@metaemotion.com

35

Hydradicom.com

Manual de usuario de HydraDICOM

5.4 Servicio de dicomizacin


Proporciona un servicio avanzado que convierte automticamente ficheros en formato DICOM
mediante solicitudes HTTP desde una pgina web o un sistema externo.

5.5 Estrategias personalizadas


Permite definir comportamientos personalizados, abstrayendo la topologa y transformar o redirigir
solicitudes en funcin de su contenido. El siguiente ejemplo contempla una abstraccin de PACS
que delega a dos destinos en funcin de si la imagen es radiolgica o convencional.

contacto@metaemotion.com

36

Hydradicom.com

Manual de usuario de HydraDICOM

contacto@metaemotion.com

37

Hydradicom.com

Manual de usuario de HydraDICOM

6. Anexo I. Snippets de cdigo de ejemplo

6.1 SOAP
Consulta SOAP mediante implementacin .NET (Listar sobre Study Root Query Information Model
los estudios del da actual):
namespace DemoWSDL

class Test

{
public static int Main(String[] args) {
DateTime today = DateTime.Now;
DicomFindService.CFindPortTypeClient cfind =
new DicomFindService.CFindPortTypeClient();
List<DicomFindService.SimpleDicomItem> query =
new List<DicomFindService.SimpleDicomItem>();
DicomFindService.SimpleDicomItem item = null;
item = new DicomFindService.SimpleDicomItem();
item.group = "0008";
item.element = "0005";
item.vr = "CS";
item.value = "ISO_IR 100";
query.Add(item);
item = new DicomFindService.SimpleDicomItem();
item.group = "0008";
item.element = "0052";
item.vr = "CS";
item.value = "STUDY";
query.Add(item);
item = new DicomFindService.SimpleDicomItem();
item.group = "0008";
item.element = "0020";
item.vr = "CS";
item.value = String.Format("{0:0000}{1:00}{2:00}",
today.Year, today.Month, today.Day);
query.Add(item);
System.Console.WriteLine(cfind.find(query.ToArray(),
"1.2.840.10008.5.1.4.1.2.2.1"));
return 0;

}
}
}

contacto@metaemotion.com

38

Hydradicom.com

Manual de usuario de HydraDICOM

6.2 WADO
URL de ejemplo:
http://host_hydra:8082/wado?
requestType=WADO&studyUID=1.2.276.0.7230010.3.1.2.447480832.1
0703.1303123469.743905&seriesUID=1.2.276.0.7230010.3.1.3.4474
80832.10703.1303123469.743904&objectUID=1.2.276.0.7230010.3.1
.4.447480832.10703.1303123469.743906

6.3 Scripting
Ejemplo de script de filtrado que descarta las transacciones DICOM C-STORE de modalidad CT:
import com.metaemotion.hydra.dicom.message.DicomMessage;
import org.dcm4che.dict.Tags;
request = payload.getRequest();
switch (request.getDicomMessageType()) {
case DicomMessage.DicomMessageType.FIND_RQ:
log.info("Not filtering FIND REQUEST");
return true;
break;
case DicomMessage.DicomMessageType.GET_RQ:
log.info("Not filtering GET REQUEST");
return true;
break;
case DicomMessage.DicomMessageType.STORE_RQ:
// Filter CT Storing
log.info("Filtering STORE REQUEST");
data = request.getData()
if (data != null && data.contains(Tags.Modality)) {
if (data.getString(Tags.Modality) == "CT") {
return false;
}
}
return true; // Default fallback
break;
default:
log.info("Not filtering default request: "
+ request.getDicomMessageType());
return true;
contacto@metaemotion.com

39

Hydradicom.com

Manual de usuario de HydraDICOM


break;
}
return true;
Ejemplo de script de enrutado en funcin del identificador del paciente, este script debe de ir dentro
de un componente de enrutado con scripting:
import com.metaemotion.hydra.dicom.message.DicomMessage;
import org.dcm4che.dict.Tags;
import org.dcm4che.data.Dataset;
import java.util.ArrayList;
import java.util.List;

Dataset dataset =

payload.getData();

//get patient id
final String patId = dataset.getString(Tags.PatientID);
log.debug("Issuer of patient id"+patId);

//routing...
if (patId != null && !patId.isEmpty()) {
if (patId.startsWith("A")) {
//only PACS_A
log.debug("Sending message to PACS_A");
return scriptHelper.getRoute("PACS_A");
} else if (patId.startsWith("B")) {
//only PACS_B
log.debug("Sending message to PACS_B");
return scriptHelper.getRoute("Siemens");

contacto@metaemotion.com

40

Hydradicom.com

Manual de usuario de HydraDICOM


} else {
log.debug("Sending message to all routes");
return scriptHelper.getAllRoutes();
}
} else {
log.warn("SendingMessage to all outputs, Message type");
return scriptHelper.getAllRoutes();
}
Llamar a un comando externo que recibe como parmetro todos los ficheros de un store:
import com.metaemotion.hydra.dicom.message.DicomMessage;
import org.dcm4che.dict.Tags;
import java.io.BufferedReader;
import java.io.InputStreamReader;

if (payload == null) {
return payload;
}

final String commandStr = "command.exe ";


for (DicomMessage child: payload.getChildren()) {
if (child.getDicomMessageType() ==
DicomMessage.DicomMessageType.STORE_RQ)
{
if (child.getFile() != null) {
log.error("Processing file: " +
child.getFile().getFilePath());

contacto@metaemotion.com

41

Hydradicom.com

Manual de usuario de HydraDICOM


StringBuilder sbCmd = new
StringBuilder(commandStr);
sbCmd.append(child.getFile().getFilePath()).append(' ');
sbCmd.append(child.getFile().getFilePath());

try {
final Runtime rt = Runtime.getRuntime();
final Process pr =
rt.exec(sbCmd.toString());

final BufferedReader input = new


BufferedReader(new InputStreamReader(pr.getInputStream()));

String line=null;

final StringBuilder logProcesing = new


StringBuilder();
while((line=input.readLine()) != null) {
logProcesing.append(line).append('\n');
}

if (pr.waitFor() != 0) {
log.error("Error processing file: " +
child.getFile().getFilePath() + " log:\n" +
logProcesing.toString());
} else {
log.error("File processed
successfully: " + child.getFile().getFilePath() + " log:\n" +
contacto@metaemotion.com

42

Hydradicom.com

Manual de usuario de HydraDICOM


logProcesing.toString());
//force HydraDICOM to reload file
child.getFile().refreshFile();
}
} catch(Exception e) {
log.error("Exception processing file: " +
child.getFile().getFilePath() + " exception:\n" +
e.toString());
}
}
}
}
return payload;
Filtrar store request por sop class uid o por tamao del fichero:
import com.metaemotion.hydra.dicom.message.DicomMessage;
import com.metaemotion.hydra.cache.DicomFile;
import org.dcm4che.dict.Tags;
import org.dcm4che.data.Dataset;

final String FILTERED_SOP = "1.2.840.10008.5.1.4.1.1.1";


final long MAX_FILE_SIZE = 10*1024*1024; // max file size in
bytes
switch (payload.getDicomMessageType()) {
case DicomMessage.DicomMessageType.STORE_RQ:
DicomFile file = payload.getFile();
if (file != null &&
FILTERED_SOP.equals(file.getSOPClassUID())) {
log.info("file filtered by sop class uid");
contacto@metaemotion.com

43

Hydradicom.com

Manual de usuario de HydraDICOM


return false;
} else if (file != null && file.getFileSize() >
MAX_FILE_SIZE) {
log.info("file filtered by size");
return false;
}
log.debug("file not filtered");
return true;
break;
default:
return true;
break;
}

contacto@metaemotion.com

44

Hydradicom.com