Publicar web service jax-ws usando el módulo webservices.jaxws de OpenMRS

Antes que nada, siendo ésta la primera vez que hablaré sobre OpenMRS en el blog tengo que aclarar que aún no conozco muy bien este proyecto; hace algún tiempo andaba buscando un proyecto opensource sobre el cual trabajar para desarrollar un sistema de gestión de información hospitalaria/historia clínica electrónica para el hospital en el que trabajo y me topé con varios, uno en php llamado: OpenEMR el cual no he tenido la oprtunidad de investigar más a fondo, sobretodo porque en el trabajo estamos buscando una solución/proyecto más orientado a Java por la herramientas que tenemos disponibles para éste lenguage como Hibernate, Spring, etc.

En fin, así fue como di con OpenMRS que tiene una comunidad bastante activa, una lista de correo colaboradora y aunque todavía no se encuentra bastante documentación me pareció que es el punto por el cual dirigirse, realmente me gusta su comunidad, incluso hace poco realizaron una conferencia aquí en Peru (a la que no tuve la oportunidad de asistir). Y pues esto se ve bastante bueno.

En fin, ya me decidí a hacer algunas pruebas reales sobre OpenMRS, y pues a investigar como usar su API. Y a modo de ejemplo e introducción en éste artículo describiré como publicar información sobre los pacientes a través de un web service con jaxws dentro de openmrs como módulo, para ésto utilizaremos los siguientes módulos:

webservices.jaxws

webservicepatientstubexample

Antes que nada, si quieren probar ésto les recomendaría leer los siguientes artículos:

http://openmrs.org/wiki/Modules

http://openmrs.org/wiki/Creating_Your_First_OpenMRS_Module

http://openmrs.org/wiki/Administering_Modules

http://openmrs.org/wiki/Step-by-Step_Installation_for_Developers

Después de leer esos artículos ya tendrán un idea bastante completa sobre como:

Instalar openmrs (lo cual puede ser una tarea bastante abrumadora al comienzo si se encuentran detrás de un proxy, por ejemplo).

Crear un módulo de prueba, lo cual recomiendo altamente que hagan.

Y también sabrán como bajarse la fuente de los  módulos desde a través de svn (obligado entender subversion)

http://dev.openmrs.org/browser/openmrs-modules

http://dev.openmrs.org/browser/openmrs-modules/devexamples

Si ya leyeron todos esos artículos pues ya casi todo está hecho. Solo falta:

Empaquetar el módulo webservices.jaxws usando ant, subirlo a openmrs a través del administrador web de módulos

Empaquetar webservicepatientstubexample y subirlo a openmrs también…

Y si OpenMRS no emite ninguna alerta, entonces ya deberíamos ser capaces de consultar nuestro web service usando SoapUI con Basic Authorization.

http://localhost:8080/openmrs/ms/examplestubs/patientservice?wsdl

A continuación un ejemplo de una petición raw y la respuesta desde openMRS:


POST http://localhost:8080/openmrs/ms/examplestubs/patientservice HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Authorization: Basic YWRtaWw6WG8wTuM1Nao=
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8080
Content-Length: 445

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://web.webserviceexamplepatientstub.module.openmrs.org/">
 <soapenv:Header/>
 <soapenv:Body>
 <web:getPatients>
 <arg0></arg0>
 <arg1>121212</arg1>
 <arg2>
 <!--Zero or more repetitions:-->
 </arg2>
 <arg3>true</arg3>
 </web:getPatients>
 </soapenv:Body>
</soapenv:Envelope>
 

Y la respuesta:


<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
 <S:Body>
 <ns2:getPatientsResponse xmlns:ns2="http://web.webserviceexamplepatientstub.module.openmrs.org/">
 <return>
 <item>
 <familyName>Hablutze</familyName>
 <givenName>Jaime</givenName>
 <identfier>121212</identfier>
 <identifierTypeId>2</identifierTypeId>
 <middleName/>
 <patientId>4</patientId>
 <personId>4</personId>
 </item>
 </return>
 </ns2:getPatientsResponse>
 </S:Body>
</S:Envelope>

Si necesitas ayuda en alguna de las fases no dudes en contactarme, puedes dirigirte a la pestaña “Sobre el autor” por mi correo y nada, los comentarios son bienvenidos .)

Leave a Reply

Your email address will not be published. Required fields are marked *