INTERCAMBIO DE MENSAJES DICOM

Anuncio
Memorias II Congreso Latinoamericano de Ingeniería Biomédica, Habana 2001, Mayo 23 al 25, 2001, La Habana, Cuba
INTERCAMBIO DE MENSAJES DICOM
J. R. Jiménez, V. Medina, A. Martínez
Universidad Autónoma Metropolitana – Iztapalapa
Departamento de Ingeniería Eléctrica – Area de Procesamiento Digital de Señales e Imágenes Biomédicas
Av. Michoacán y la Purísima, Col. Vicentina, México, D.F., C.P.09340, [email protected]
RESUMEN
El desarrollo de sistemas de almacenamiento y
transferencia de imágenes médicas (PACS) ha conducido
a la definición del estándar de comunicación DICOM.
Este estándar emplea un protocolo de intercambio de
mensajes (DIMSE) que es usado por dos entidades de
aplicación para intercambiar imágenes e información. En
este trabajo se describe este protocolo y se modela su
comportamiento aplicando un proceso de desarrollo de
proyectos de software. Con los productos obtenidos del
proceso se establece un modelo de solución del protocolo,
proporcionando los servicios que requieren los usuarios de
DIMSE. Las pruebas del proceso indican que el modelo
propuesto es adecuado para la capa DIMSE.
Palabras clave: modelo de objetos, proceso de
desarrollo, casos de uso, diagramas de interacción,
diagramas de clase.
1. INTRODUCCIÓN
El desarrollo de nuevas técnicas en imágenes y el
incremento de las modalidades de imágenes en formato
digital ha ocasionado el desarrollo de sistemas de
administración de imágenes médicas llamados PACS
(Picture Archiving and Communication System).
La evolución en el diseño de PACS avanza hacia una
arquitectura abierta, con equipo de distintos proveedores
basado en el estándar DICOM (Digital Imaging and
Communications in Medicine) cuyos objetivos son:
• Promover la comunicación de imágenes digitales sin
importar el fabricante del dispositivo.
• Facilitar el desarrollo y expansión de PACS que
puedan iterconectarse con otros sistemas de
información del hospital.
• Permitir la creación de bases de datos de información
de diagnóstico que se puedan consultar por una amplia
variedad de dispositivos distribuidos geográficamente.
DICOM es un estándar que contempla el modelo
orientado a objetos, buscando con ello que los desarrollos
en software del mismo, sean más rápidos y que se elimine
la necesidad de reinventar cada vez que se hace una
implementación de DICOM, dado que depende de modelos
explícitos y detallados de cómo están descritos y
relacionados los objetos (pacientes, imágenes, reportes,
etc.) involucrados en operaciones de radiología.
El diseño orientado a objetos proporciona una manera de
describir la información y qué hacer con ella, DICOM hace
uso de este concepto definiendo servicios como “almacenar
una imagen” u “obtener información de paciente” [13].
Estos servicios se implementan en DICOM usando
construcciones conocidas como un conjunto genérico de
operaciones y notificaciones llamados Elementos de
Servicio de Mensaje DICOM o DIMSE (DICOM Message
Service Element).
Ya que DICOM utiliza el modelo de objetos es necesario
aplicar un proceso de desarrollo de software en el diseño
de la implementación de este estándar, de tal manera que
aumente la posibilidad de obtener un producto de software
de alta calidad, robusto y de fácil mantenimiento.
Aplicando el proceso de desarrollo para proyectos de
software propuesto por Larman [8], se presenta un modelo
de solución en el diseño de la parte que corresponde a
DIMSE del estándar DICOM.
2. METODOLOGÍA
DICOM es un estándar que cubre parcialmente el modelo
de procesos distribuidos, el cual tiene al menos dos
procesos compartiendo información [12]. La relación entre
ambos procesos se define por una Clase de Servicio
describiendo los papeles de ambos procesos, el SCU
(Service Class User) es el cliente y el SCP (Service Class
Provider) es el servidor. La Clase de Servicio también
define una clase SOP (Service Object Pair Class) que
combina la información y operaciones que ambos procesos
intercambian.
Para que se lleve a cambio el intercambio entre los dos
procesos se debe acordar cuáles clases SOP se soportan (e
implícitamente la Clase de Servicio) y cómo están
divididos los papeles de SCU y SCP para que de esta
manera se intercambien las instancias de Clase SOP.
Después de que se reune la información se codifica en los
formatos DICOM, incluyendo cada atributo en un elemento
de datos. Este conjunto de datos lo maneja el proveedor de
servicio de intercambio, asegurándose que la contra parte
recibe un conjunto de datos igual.
Antes de intercambiar el conjunto de datos de una
instancia SOP se establece la manera en que el conjunto de
datos se codifica por acuerdo, ya sea cuando se usa un
intercambio de red o un almacenamiento en un medio. La
sintaxis de transferencia define un conjunto de reglas de
codificación usadas para representar sin ambigüedad este
conjunto de datos.
La parte de la información de una clase SOP se define en
los IODs (Information Object Definition), y los elementos
de servicio son las operaciones permitidas sobre los IODs.
El grupo de elementos de servicio pertenecientes a la clase
SOP se selecciona de una lista proporcionada por DIMSE.
DIMSE es un elemento de Servicio de Aplicación usado
950-7132-57-5 (c) 2001, Sociedad Cubana de Bioingeniería, artículo 00293
por un par de Entidades de Aplicación DICOM con el
propósito de intercambiar imágenes médicas e información
relacionada. Este intercambio se lleva a cabo siguiendo un
protocolo que define las reglas de codificación para
construir estos mensajes [10]. DIMSE usa el modelo OSI
para representar la interconexión de equipo y ofrece tres
opciones de protocolos de comunicación: una pila OSI, una
de TCP/IP o bien una pila punto a punto.
DIMSE especifica dos grupos de servicios: DIMSE-C,
soporta operaciones con clases SOP compuestas y DIMSEN que soporta operaciones y notificaciones de clases SOP
normalizadas. Los servicios incluidos en DIMSE-C son: CSTORE, C-FIND, C-GET, C-MOVE y C-ECHO; los de
DIMSE-N son: N-EVENT-REPORT, N-GET, N-SET, NACTION, N-CREATE y N-DELETE. Así, un mensaje
DICOM está compuesto de un Grupo de Comandos y un
Grupo de Datos que es dependiente del primero; en el
Grupo de Comandos se indica el servicio DIMSE que se
ejecuta con los datos.
Los servicios DIMSE se implementan como una
interacción petición/respuesta realizada dentro del contexto
de una Asociación establecida, definiendo los
procedimientos y reglas de codificación para construir
mensajes en el intercambio de petición y respuesta. En
general, DIMSE acepta primitivas de petición y respuesta
de un usuario, construye y acepta mensajes, y los pasa por
medio de primitivas de indicación y confirmación.
Para resolver el problema de analizar, diseñar y desarrollar
un modelo de solución para el protocolo DIMSE se aplica
un proceso de desarrollo de software, entendiendo que este
proceso es un método para organizar las actividades en la
creación, desarrollo y mantenimiento de sistemas de
programas para computadora. Booch [3] recomienda los
siguientes principios como parte del desarrollo:
• Iterativo
e
incremental.
Ampliación
y
refinamiento sucesivo de un sistema a través de ciclos
múltiples de desarrollo de análisis, diseño,
implementación y prueba.
• Manejado por casos de uso. El proceso de
desarrollo deberá estar influenciado y organizado
alrededor de los casos de uso.
• Enfasis temprano en la definición de la
arquitectura. Estructura de alto nivel de subsistemas y
componentes,
sus
interfaces,
conexiones
e
interacciones; consiste de un conjunto de marcos de
trabajo,
subsistemas,
clases,
asignación
de
responsabilidades y colaboración de objetos que
satisfacen las funciones del sistema.
Larman [8] establece que los pasos principales para liberar
una aplicación incluyen los siguientes: Planear y elaborar
(definición de requerimientos y casos de uso), Construir
(ciclos de desarrollo aplicando sus fases principales de
análisis, diseño y construcción) y Entregar (poner el
sistema en producción).
A continuación presentamos los resultados obtenidos de
aplicar los primeros dos pasos principales correspondientes
a Planear y elaborar y Construir.
3. RESULTADOS
La parte primordial de Planear y elaborar es la definición
del diagrama de casos de uso, la cual surge de la
identificación de los actores y procesos que ellos inician en
el sistema. Después de realizar varias iteraciones y
refinamientos en esta identificación llegamos al diagrama
de la figura 1.
El diagrama de la figura 1 ilustra el conjunto de casos
de uso para el sistema. Proveer Servicios DIMSE es el caso
de uso más general y es iniciado por un SCU como
invocador de un servicio, se relaciona también con SCP ya
que como ejecutor debe dar una respuesta del servicio
solicitado, además tiene una relación de uso con
Intercambiar mensaje ya que éste realiza el intercambio del
mensaje.
SCU
Proveer Servicios DIMSE
SCP
<<uso>>
<<uso>>
Respuesta pendiente
<<uso>
<<uso>
Intercambiar mensaje
Cancelar respuesta pendiente
DULP
Fig. 1. Diagrama de casos de uso de DIMSE, mostrando a los actores
externos SCU (cliente), SCP (servidor) y DULP (DICOM Upper Layer
Protocol, montado sobre la pila de comunicación, encargado de enviar el
mensaje) y los procesos en que están involucrados
Fig. 2. Modelo conceptual de DIMSE
Respuesta pendiente incluye aquellos servicios que envían
más de una respuesta, antes de generar una confirmación
final (C-FIND, C-GET y C-MOVE), la cancelación de
estos servicios la cubre el caso de uso Cancelar respuesta
pendiente.
En el paso de Construir y como primer producto de la
fase de análisis se obtuvo el modelo conceptual de DIMSE
mostrado en la figura 2. Este modelo explica el protocolo
que sigue DIMSE en la petición o respuesta de uno de sus
servicios, funciona de la siguiente manera: un Invocador
pide un servicio DIMSE, dicho servicio contiene un
Mensaje que se forma o construye con un Grupo de
Comando y un Grupo de Datos, a su vez, el Grupo de
Comando está formado por Elementos de Comando. Si el
Mensaje es muy grande se fragmenta en datos conocidos
como PDVs (Presentation Data Value) para ser enviados
por DULP. Algo similar ocurre cuando el Ejecutor
responde un servicio.
Con los casos de uso descubiertos se modela el
comportamiento del sistema con los diagramas de
secuencia, mostrando para cada caso de uso los eventos que
generan los actores externos, su orden y eventos internos
del sistema. En la figura 3 se muestra el diagrama
correspondiente al caso de uso Proveer Servicios DIMSE,
el actor del lado izquierdo es el Invocador:SCU, que
solicita un servicio al proveedor Dimse1:DIMSE, éste a su
vez construye el mensaje y lo envía usando un servicio de
Dulp:DULP. Del lado derecho al recibirse el mensaje se
pasa al Ejecutor:SCP como una indicación de servicio, una
vez realizada la operación asociada con el servicio, el
Ejecutor emite una respuesta, Dimse2:DIMSE construye el
mensaje y lo envía a través de Dulp, Dimse1 lo recibe y
finalmente le confirma el servicio al Invocador
completándose el intercambio del mensaje.
interacción, los cuales ilustran cómo se comunican los
objetos para cumplir los requerimientos y posteriormente
se hace el diseño de diagramas de clase para resumir la
definición de las clases que serán implementadas.
Como diagramas de interacción se usaron los diagramas de
colaboración para mostrar el orden de ejecución de los
mensajes para realizar una operación. La asignación de
responsabilidades de los objetos que colaboran en estos
diagramas se hizo por medio de patrones GRASP (General
Responsibility Assignment Software Patterns).
Para obtener el diagrama de clases se examina el modelo
conceptual y los diagramas de interacción. La figura 4
muestra el diagrama de clases obtenido para el sistema
DIMSE.
PDV
<<Actor>>
DULP
VR
DIMSE
1
1
1
FORMATO
1 <<iterator>>
LISTA
1
1
MENSAJE
1 0..1
GRUPODATO
1
1
ELEMENTOCOMANDO
Invocador : SCU
Dimse1 :
DIMSE
Dulp : DULP
Dimse2 :
DIMSE
*
1
GRUPOCOMANDO
Ejecutor : SCP
Petición de servicio
Fig. 4. Diagrama de clases de DIMSE. No se muestran los atributos y
operaciones de las clases para simplificar el diagrama.
Construir mensaje
Enviar mensaje
(Servicio P-DATA)
Recibir mensaje
Indicación de servicio
Respuesta de servicio
Enviar mensaje
(Servicio P-DATA)
Recibir mensaje
Construir mensaje
Confirmación de servicio
Fig. 3. Diagrama de secuencia para el caso de uso Proveer Servicios DIMSE
El comportamiento de los casos de uso restantes se modela
de la misma manera.
Otro producto que se obtuvo dentro de la fase de análisis y
que ayuda también a definir comportamiento son los
contratos. Un contrato describe el efecto de las operaciones
sobre el sistema, y dichas operaciones se identifican de los
diagramas de secuencia. Las operaciones encontradas son:
Petición de servicio, Construir mensaje, Enviar mensaje,
Recibir mensaje, Indicación de servicio, Respuesta de
servicio y Confirmación de servicio. Se elaboró un contrato
para cada operación, conteniendo las siguientes partes:
Responsabilidades, Pre-condiciones y Post-condiciones.
Los contratos son el producto final del análisis y se
procede con la fase de diseño dentro del ciclo de desarrollo.
En la fase de diseño se busca una solución lógica, cuya
parte más importante es la creación de los diagramas de
La clase principal del diagrama se llama DIMSE,
representando al sistema total, las clases restantes son
colaboradoras para cumplir con la responsabilidad
principal de intercambiar mensajes entre Entidades de
Aplicación.
Con el diagrama de clases concluido se esta preparado para
entrar a la fase de construcción, la cual involucra la
implementación del diseño en software. Del diagrama de
clases se hizo la traducción de clases a código C++. La
implementación de los servicios DIMSE en este diseño se
consideran de manera implícita, dado que la clase DIMSE
tiene un único atributo de tipo buffer, el cual contiene
como primer elemento el nombre del servicio solicitado,
así como los parámetros requeridos por el servicio.
4. DISCUSIÓN
La división de DICOM en varias partes dificulta la
comprensión del mismo porque cada tema se aborda en
forma independiente de los demás. Aunado a ésto la
definición del estándar es escueta y dirigida a expertos del
tema. La aplicación de un proceso de desarrollo fue de
gran ayuda para comprender la parte de intercambio de
mensajes de DICOM.
La definición de requerimientos se realizó analizando la
parte 7 de DICOM, el diagrama de casos de uso presentado
fue el resultado de iterar los ciclos de desarrollo del
proceso, nos obligó a buscar y entender cada uno de los
eventos a los que el sistema debe responder, y se dio por
concluido cuando se fue capaz de explicar la funcionalidad
del sistema al usuario o experto de dominio y acordar que
cumple con todos los procesos del sistema.
El modelo conceptual permitió describir los conceptos
(objetos) principales y su relación para establecer, a un
nivel alto de abstracción, la forma en que se lleva a cabo el
intercambio de mensajes.
Para entender el comportamiento del sistema, los
diagramas de secuencia fueron de gran utilidad,
elaboramos muchos diagramas y fue a través de un
refinamiento sucesivo y de repasar el Estándar que se logró
establecer el diagrama que modeló correctamente el
sistema.
La asignación de responsabilidades en los diagramas de
colaboración por medio de GRASP fue una actividad
ineludible, teniendo gran efecto sobre la robustez,
mantenimiento y reusabilidad de los componentes de
software.
Del diagrama de clases se traduce mucha información
directamente a código y proporciona la definición de las
clases, los métodos de las mismas se toman de los mensajes
de los diagramas de colaboración, y el orden en que se dan
estos mensajes se traduce a una declaración de software en
un lenguaje de programación
5. CONCLUSIONES
DICOM es un estándar complejo, escrito en el lenguaje
árido de los estándares y con un mínimo de información
explicativa. No obstante, DIMSE fue comprendido
auxiliándose y apoyándose en la metodología propuesta por
el proceso de desarrollo de proyectos de software.
Un proceso de desarrollo define el punto de partida y la
secuencia de aplicación de las fases para un ciclo de
desarrollo, y permite obtener los productos necesarios para
crear un modelo de solución del dominio del problema.
La implementación del estándar DICOM es un proyecto de
gran alcance en el que se debe involucrar un grupo
interdisciplinario con experiencia en aspectos diversos,
ésto ha motivado que se divida. DIMSE es sólo la parte
encargada de suministrar los servicios para que una
implementación de DICOM intercambie un mensaje, se
comunica con su capa inferior que es DULP, usando los
servicios de éste para enviar los mensajes. DULP es la
parte con la que iniciamos nuestro proyecto de
implementación de DICOM, y actualmente estamos
codificando ambos protocolos con la finalidad de
acoplarlos y probar sus interfaces e interoperabilidad.
AGRADECIMIENTOS
Agradecemos la colaboración y sugerencias de la Dra.
Hanna Oktabba durante la aplicación del proceso de
desarrollo en el presente trabajo. Agradecemos también al
CONACyT el financiamiento de este proyecto, apoyo No.
400200-S-29290ª
REFERENCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
S. W. Ambler, The Unified Modeling language v1.1 and Beyond:
The
Techniques
of
Object-Oriented
Modeling,
http://www.ambysoft.com/umlAndBeyond.pdf, 1997.
E. V. Berard, Be Careful With “Use Cases”, The Object Agency,
Inc., 1995.
G. Booch, Object Solutions: Managing the Object-Oriented Project,
Addison-Wesley, 1996.
G. Booch, Análisis y diseño orientado a objetos con aplicaciones,
Addison-Wesley/Diaz de Santos, 1996.
I. Jacobson, G. Booch, J. Rumbaugh, The Unified Software
Development Process, Addison-Wesley, 1999.
I. Jacobson, Object-Oriented Software Engineering: A Use Case
Drive Approach, Addison-Wesley, 1992.
C. D. Land, V. Lashin, A. Oriol, J. J. Villanueva, Object-oriented
Design of the DICOM Standard and its Application to
Cardiovascular Imaging, http://www.cvc.uab.es/~craig/dicom/oodicom.htm.
C. Larman, Applying UML and Patterns. An Introduction to ObjectOriented Analysis and Design, Prentice Hall PTR, 1998.
D. F. Leotta, Y. Kim, “Requirements for Picture Archiving and
Communications. Electronic Handling of Image Data Needs Clinical
Acceptance for Success”, IEEE Engng in Med and Biol, pp. 62-69,
March 1993.
NEMA Standards Publication PS 3.7-1993. Digital Imaging and
Communications in Medicine (DICOM) Part 7: Message Exchange,
National Electrical Manufacturers Association, 1994.
NEMA Standards Publication PS 3.8-1993.
B. Revet, “DICOM Cook Book for Implementations in
Modalilities”, Philips Medical Systems Nederland B. V., Version 1.1,
January 1997.
C. H. Steven, F. W. Prior, W. D. Bidgood, C. Parisot, G. Claeys,
DICOM:
An
Introduction
to
the
Standard,
http://www.dicomanalyser.co.uk/html/introduction.htm.
The Fundamentals of DICOM, Healt Imaging Division, Eastman
Kodak Company, Cat. No. 885 5959, 1996.
DICOM MESSAGE EXCHANGE
ABSTRACT
The development of storage systems and transferring of medical images (PACS) has urged a definition of a
communication standard (DICOM). This standard requires a message exchange protocol (DIMSE) used for two
application entities in order to interchange images and information. In this work, a DIMSE protocol is described
and applied to a software development process. The promising results obtained might help to propose a solution
model able to deliver DIMSE services demanded by the users. Process testing indicates that DIMSE model can
meet the DIMSE shell requirements. Therefore, this DIMSE methodology is capable to generate an easy-tomaintain and robust model for information exchange.
Keywords: object model, development process, use case, interaction diagrams, class diagrams.
Descargar