DWR in OpenMRS

OpenMRS uses dwr for AJAX. In a sentence, dwr converts java objects to javascript and vice versa.

DWR in core openmrs

Using DWR in a JSP page

<script src="<openmrs:contextPath/>/dwr/interface/DWRPatientService.js"></script> <script> DWRPatientService.findPatients("John", false, objectsFound); function objectsFound(patients) { alert("There are " + patients.length + " patients named john"); } </script>

Adding DWR into your module

Add to config.xml:

<dwr> <allow> <create creator="new" javascript="DWRMyModuleService"> <param name="class" value="@MODULE_PACKAGE@.web.DWRMyModuleService"/> <include method="getAllLocations"/> </create> </allow> <signatures> <![CDATA[ import @MODULE_PACKAGE@.web.DWRMyModuleService; DWRMyModuleService.getAllLocations(); ]]> </signatures> </dwr>

Create this class:

public class DWRMyModuleService { public List<String> getAllLocations() { List<String> locationNames = new Vector<String>(); for (Location loc : Context.getAllLocations()) { locationNames.add(loc.getName()); } return locationNames; }