This is a compilation of notes written during a session at the ?2010 Implementers Group Meeting in South Africa.
There are currently two modules: JAXP and REST modules.
For OpenMRS, we intend to build out more functionality. The goal is to reflect the core API in a distributed module and then allow other modules to extend the web service functions for implementation- or application-specific uses. As we find popular web service methods, these could be pushed down to the core API.
Will help support mobile, Ruby, and PHP apps.
Most importantly, by 1.9 we want to have a clear & solid strategy for web service support.
In some environments, SOAP libraries could make it easier to work with SOAP over REST. REST calls are also less familiar to some folks.
Heavyweight vs. lightweight objects? This is similar to Amazon.com's approach. We could consider small & big versions objects OR consider having a standard object with the option to list additive properties (e.g., custom object).
Based on Canada's experience with WS, Returning a "summary" of objects in a list may lead to a chatty interaction.
Look at Google Charts.
Consider that we may want to support both publish & subscribe – i.e., OpenMRS may
Known use cases: mobile devices, other applications
Support for reporting methods.
The mobile group plans to present their web service needs to OpenMRS.
Interoperability for DHIS.
Make it easy for modules to reflex methods as web services. Would be really nice if modules could make annotations without requiring the web service module.
AMPATH is using the REST module to look up patients. For the lab system, REST calls are sent to an interface module that proxies the calls to the REST module.
Mobile solutions are using calls from the X/Forms modules, primarily to add new data to OpenMRS
Jembi has extended the JAXP module to push patient records into OpenMRS and retrieve them. This includes code to proxy calls, queue requests, and allow transfer via USB. You can also
OAuth is used commonly.
REST module uses basic authentication and IP filtering.