Connecting eHealth blog

Cómo probar un servicio web HL7 con SoapUI en 5 pasos

Mostramos de forma práctica cómo crear una baterías de tests para probar un servicio web SOAP que contiene mensajes HL7 utilizando SoapUI.

En el primer ejercicio del tutorial de NextGen (Mirth) Connect hemos utilizado SoapUI para comprobar el funcionamiento de nuestros servicios web, pero sin entrar en el campo del testeo de este tipo de aplicaciones.

Material utilizado

Para probar un servicio web que contenga mensajes HL7 con SoapUI, lo primero que necesitamos es desplegar un servicio web de estas características.

El ejercicio 2 del tutorial de NextGen (Mirth) Connect explicamos como desplegar un servicio web SOAP desarrollado para la validación de mensajes HL7. Si tienes interés en NextGen (Mirth) Connect puede ser recomendable hacer hacer ese ejercicio antes de este tutorial.

En cualquier caso, es posible descargar el material para seguir el artículo:

Recursos descargables

Contiene los siguientes ficheros:

  • 1-alta-adt-a28-ok.hl7: mensaje HL7 de alta utilizado que pasa la validación.
  • 1-alta-adt-a28-no-ok.hl7: modificación del mensaje anterior para que no pase la validación.
  • ws_validation_channel.xml: exportación del canal desarrollado para simular el servicio web de validación de mensajería HL7 para su importación en NextGen (Mirth) Connect.
  • Informática-Sana-soapui-test-suit-project.xml: proyecto SoapUI utilizado para probar el servicio web de validación de mensajería HL7 mediante una batería de pruebas (para su importación en SoapUI).
  • validator.wsdl: fichero WSDL generado por el servicio web de validación de mensajería.

En la página de SoapUI puedes:

Para este tutorial se ha usado SoapUI Open Source 5.0.0.

Si quieres saber más sobre HL7, puedes visitar nuestro artículo sobre el estándar HL7.

¿Cómo probamos un servicio web HL7 con SoapUI?

Vamos a configurar una batería de pruebas sencilla para el servicio web de validación de la mensajería HL7 utilizando SoapUI.

Para ello, partiremos del proyecto en SoapUI soapui-project.xml, que ya contiene dos peticiones con mensajes HL7, uno que cumple el proceso de validación y otro que no lo cumple:

Mensaje HL7 que cumple la validación:

MSH|^~\&|NewModernHIS||PharmaCoolX 1.0||20140701123154||ADT^A28|1-alta-adt-a28-ok|T|2.5|||AL|NE
EVN|A28|20140701123153
PID|1||NHC||APELLIDO1^NOMBRE^APELLIDO2||19840123000000|M||||||||||||||||||||||N
PV1|1|N

Mensaje HL7 que no cumple la validación:

MSH|^~\&|NewModernHIS||PharmaCoolX 1.0||20140701123154||ADT^A28|1-alta-adt-a28-no-ok|K|2.5|||AL|NE
EVN|A28|20140701123153
PID|1||NHC||APELLIDO1^NOMBRE^APELLIDO2||19840123000000|M||||||||||||||||||||||N
PV1|1|N

La batería de pruebas de SoapUI tendrá los asertos adecuados para comprobar que los mensaje HL7 que deben pasar la validación, la pasan, y que los mensajes que no deben pasar la validación, fallan.

Finalmente, realizaremos un cambio en el servicio web para que se comporte de forma diferente y la batería de pruebas falle.

Creación de la batería de tests para el servicio web HL7 con SoapUI

Una batería de pruebas (TestSuite) es una estructura jerárquica. Un TestSuite se divide en diferentes TestCase, que, a su vez, agrupan un conjunto de pruebas unitarias llamadas TestStep.

Todos estos elementos se podrán ejecutar de forma independiente, por lo que es conveniente estructurar muy bien todas nuestras pruebas.

1. Configuración de la batería de pruebas

Para crear una nueva batería de pruebas, hacemos clic con el botón derecho del ratón sobre el proyecto y elegimos la opción New TestSuite:

Creación de un TestSuite

Posteriormente, debemos elegir el nombre del TestSuite:

Nombrar TestSuite

Entonces nos aparecerá en el árbol del proyecto.

2. Creación de TestCases

Para crear un nuevo TestCase, podemos hacer clic sobre el botón derecho del ratón sobre el TestSuite recién creado y elegir la opción New TestCase:

Creación de TestCase en SoapUI

De nuevo, especificamos el nombre para el nuevo elemento. En este caso, es recomendable especificar un nombre representativo del tipo de pruebas unitarias que contendrá. Ponemos «Validación de la mensajería HL7» en la ventana new TestCase de SoapUI.

Nombrado de TestCase

3. Creación de los TestSteps

Finalmente, debemos crear los TestStep. El procedimiento es similar a los anteriores, podemos hacer clic con el botón derecho del ratón sobre el TestCase, y elegir la opción “Add Step → Test Request”:

Creación de TestSteps

De nuevo, debemos especificar el nombre del elemento:

Nombrado de TestStep

Y en este caso, el tipo de operación que queremos probar:

Selección de operación para probar

Finalmente, es posible incorporar algunas validaciones más si queremos:

Verificaciones adicionales

4. Especificación de asertos

Ya tenemos nuestro primer TestCase para probar el servicio web de HL7 creado en SoapUI. Tras copiar en el área de texto el mensaje que queremos enviar (mismo contenido que tenemos en el Request1), debemos especificar los asertos.

Por defecto, y tal como se muestra en la última configuración del TestCase, ya nos incorpora una validación para comprobar que la respuesta obtenida cumple con el protocolo SOAP:

Asertos

Hacemos clic sobre el icono “+” para incorporar un nuevo aserto de tipo Contains, que validará que la respuesta del servicio web contiene cierta información que se espera:

Selección de asertos

Como esta prueba contiene un mensaje HL7 válido, el contenido del campo HL7 MSA.1 de la respuesta debe tener el valor AA. Eso mismo indicamos en el contenido a validar en el aserto:

SoapUI: aserto de tipo contains

En este punto, ya tenemos completamente configurado nuestro primer TestCase.

De la misma forma, podemos crear un nuevo TestCase llamado Mensaje Inválido donde vamos a copiar el contenido del Request2 con un mensaje que no debe pasar la validación del servicio web. Para no sobrecargar demasiado más el artículo, omitiremos las capturas de pantalla de este proceso.

Para este TestCase también debemos añadir nuestros propios asertos. En primer lugar, para comprobar que el mensaje HL7 no es válido:

SoapUI: aserto para comprobar que el mensaje HL7 no es válido

Y luego para validar por qué no:

SoapUI: aserto para validar por qué el mensaje HL7 no es válido

5. Ejecutar el TestCase

En este punto, y con el servicio web de validación de mensajería HL7 desplegado a través de NextGen (Mirth) Connect, ya podemos lanzar nuestro TestCase en SoaupUI, haciendo clic sobre el icono del “play verde”.

El resultado nos muestra que el servicio web se ha comportado como esperábamos:

Resultado de ejecución del TestCase

Si realizamos un cambio en el servicio web que hace que uno de los asertos falle (por ejemplo, omitiendo el segmento HL7 ERR con la especificación del error en la validación), al ejecutar de nuevo el TestCase en SoapUI, obtendremos un resultado no válido:

SoapUI: resultado de ejecución del TestCase

Conclusiones

Aquí concluye este artículo en el que hemos configurado una pequeña batería de pruebas para un servicio web de validación de mensajería HL7 utilizando SoapUI.

Esto puede darnos una idea de la facilidad de uso, flexibilidad y potencia de SoapUI, que por algo es una de las más utilizadas en el testeo y validación de servicios web.

Francisco J. CarrascoCómo probar un servicio web HL7 con SoapUI en 5 pasos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Resumen de la Política de Privacidad

Responsable: Caduceus Software S.L.
Finalidad: Atender tu solicitud de publicar un comentario en este artículo. Además, si marcas "Recibir nuevos artículos por correo electrónico", suscribirte a nuestra lista de correo, .
Legitimación: Para poder publicar el comentario a tu nombre necesitamos tu nombre, email, web (opcional). Para evitar spam, tus datos personales y otra información técnica pueden ser enviados a un sistema automático de reconocimiento de spam (Akismet). Para suscribirte a nuestra lista de correo necesitamos tu correo electrónico.
Destinatarios: Tus datos para el comentario no se compartirán ni se cederán a terceros. Si marcas "Recibir nuevos artículos por correo electrónico", añadiremos tu dirección de correo y tu nombre a nuestra lista en MailChimp, una compañía estadounidense que cumple y respeta la privacidad de datos. Podrás darte de baja en cualquier momento.
Derechos: Puedes ejercer tus derechos escribiendo a info@caduceus.es o en nuestro formulario de contacto (https://www.caduceus.es/contacto/).

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.