Skip to content

Commit

Permalink
DCM-47: Initiate the location mapping user interface
Browse files Browse the repository at this point in the history
  • Loading branch information
Piumal1999 committed Jun 23, 2021
1 parent 83df953 commit ef06831
Show file tree
Hide file tree
Showing 10 changed files with 209 additions and 5 deletions.
@@ -0,0 +1,103 @@
package org.openmrs.module.dhisconnector;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.openmrs.BaseOpenmrsObject;
import org.openmrs.Location;
import org.openmrs.User;

import javax.annotation.Generated;
import javax.persistence.*;
import java.util.Date;

/**
* Represents a general mapping between an OpenMRS location against a DHIS2 Organisation unit
*/
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
@Table(name = "dhisconnector_location_to_orgunit")
public class LocationToOrgUnitMapping extends BaseOpenmrsObject {

@ManyToOne(optional = false)
@JoinColumn(name = "creator")
protected User creator;

@Column(name = "date_created", nullable = false)
private Date dateCreated;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false)
private Integer id;

@Column(name = "org_unit_uid", nullable = false)
private String orgUnitUid;

@JsonIgnore
@ManyToOne(optional = false)
@JoinColumn(name = "location")
private Location location;

public LocationToOrgUnitMapping() {
}

public LocationToOrgUnitMapping(Location location, String orgUnitId) {
setLocation(location);
setOrgUnitUid(orgUnitId);
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getOrgUnitUid() {
return orgUnitUid;
}

public void setOrgUnitUid(String orgUnitUid) {
this.orgUnitUid = orgUnitUid;
}

public Location getLocation() {
return location;
}

public void setLocation(Location location) {
this.location = location;
}

/**
* @see org.openmrs.Auditable#getCreator()
*/
public User getCreator() {
return creator;
}

/**
* @see org.openmrs.Auditable#setCreator(User)
*/
public void setCreator(User creator) {
this.creator = creator;
}

/**
* @see org.openmrs.Auditable#getDateCreated()
*/
public Date getDateCreated() {
return dateCreated;
}

/**
* @see org.openmrs.Auditable#setDateCreated(Date)
*/
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
}
Expand Up @@ -16,6 +16,7 @@
import java.util.List;

import org.openmrs.api.OpenmrsService;
import org.openmrs.module.dhisconnector.LocationToOrgUnitMapping;
import org.openmrs.module.dhisconnector.ReportToDataSetMapping;
import org.openmrs.module.dhisconnector.api.model.DHISDataValueSet;
import org.openmrs.module.dhisconnector.api.model.DHISMapping;
Expand Down Expand Up @@ -106,5 +107,7 @@ public interface DHISConnectorService extends OpenmrsService {
String runAllAutomatedReportsAndPostToDHIS();

String transformToDHISPeriod(Calendar startDate, Calendar endDate, String periodType, Date lastRun);


List<LocationToOrgUnitMapping> getAllLocationToOrgUnitMappings();

}
Expand Up @@ -15,10 +15,11 @@

import java.util.List;

import org.openmrs.module.dhisconnector.LocationToOrgUnitMapping;
import org.openmrs.module.dhisconnector.ReportToDataSetMapping;

/**
* Database methods for {@link DHISReportingService}.
* Database methods for {@link DHISConnectorService}.
*/
public interface DHISConnectorDAO {

Expand All @@ -31,4 +32,6 @@ public interface DHISConnectorDAO {
void deleteReportToDataSetMapping(ReportToDataSetMapping reportToDataSetMapping);

void saveReportToDataSetMapping(ReportToDataSetMapping reportToDataSetMapping);
}

List<LocationToOrgUnitMapping> getAllLocationToOrgUnitMappings();
}
Expand Up @@ -21,12 +21,13 @@
import org.apache.commons.logging.LogFactory;
import org.openmrs.api.context.Context;
import org.openmrs.api.db.hibernate.DbSessionFactory;
import org.openmrs.module.dhisconnector.LocationToOrgUnitMapping;
import org.openmrs.module.dhisconnector.ReportToDataSetMapping;
import org.openmrs.module.dhisconnector.api.db.DHISConnectorDAO;
import org.springframework.util.ReflectionUtils;

/**
* It is a default implementation of {@link DHISReportingDAO}.
* It is a default implementation of {@link DHISConnectorDAO}.
*/
public class HibernateDHISConnectorDAO implements DHISConnectorDAO {

Expand Down Expand Up @@ -88,4 +89,10 @@ public ReportToDataSetMapping getReportToDataSetMappingByUuid(String uuid) {
public List<ReportToDataSetMapping> getAllReportToDataSetMappings() {
return sessionFactory.getCurrentSession().createCriteria(ReportToDataSetMapping.class).list();
}

@SuppressWarnings("unchecked")
@Override
public List<LocationToOrgUnitMapping> getAllLocationToOrgUnitMappings() {
return sessionFactory.getCurrentSession().createCriteria(LocationToOrgUnitMapping.class).list();
}
}
Expand Up @@ -83,6 +83,7 @@
import org.openmrs.api.context.Context;
import org.openmrs.api.impl.BaseOpenmrsService;
import org.openmrs.module.dhisconnector.Configurations;
import org.openmrs.module.dhisconnector.LocationToOrgUnitMapping;
import org.openmrs.module.dhisconnector.ReportToDataSetMapping;
import org.openmrs.module.dhisconnector.ReportToDataSetMapping.ReportingPeriodType;
import org.openmrs.module.dhisconnector.adx.AdxDataValue;
Expand Down Expand Up @@ -1620,4 +1621,9 @@ public String runAllAutomatedReportsAndPostToDHIS() {

return responses;
}

@Override
public List<LocationToOrgUnitMapping> getAllLocationToOrgUnitMappings() {
return getDao().getAllLocationToOrgUnitMappings();
}
}
3 changes: 3 additions & 0 deletions api/src/main/resources/messages.properties
@@ -1,6 +1,7 @@
${project.parent.artifactId}.general.copy=Copy
${project.parent.artifactId}.title=DHIS Connector Module
${project.parent.artifactId}.configureServer=Configure DHIS Server
${project.parent.artifactId}.locationMapping=Location Mapping
${project.parent.artifactId}.createMapping=Create Mapping
${project.parent.artifactId}.manageMappings=Manage Mappings
${project.parent.artifactId}.runReports=Run Reports
Expand Down Expand Up @@ -89,3 +90,5 @@ dhisconnector.customRange.openmrs.choose=Use Custom Date Range On OpenMRS
dhisconnector.customRange.openmrs.Date=Range
dhisconnector.openmrsStartDate=Start Date
dhisconnector.openmrsEndDate=End Date
dhisconnector.locationMapping.location=OpenMRS Location
dhisconnector.locationMapping.orgUnit=DHIS2 Organization Unit
Expand Up @@ -44,6 +44,7 @@ public Map<String, String> getLinks() {
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();

map.put("/module/dhisconnector/configureServer.form", "dhisconnector.configureServer");
map.put("/module/dhisconnector/locationMapping.form", "dhisconnector.locationMapping");
map.put("/module/dhisconnector/automation.form", "dhisconnector.automation");
map.put("/module/dhisconnector/dhis2BackupImport.form", "dhisconnector.dhis2Backup.import");
map.put("/module/dhisconnector/dhis2BackupExport.form", "dhisconnector.dhis2Backup.export");
Expand Down
Expand Up @@ -465,4 +465,14 @@ public void postAutomationPage(ModelMap model, HttpServletRequest request) {
if (StringUtils.isNotBlank(response))
request.getSession().setAttribute(WebConstants.OPENMRS_MSG_ATTR, response);
}

@RequestMapping(value = "/module/dhisconnector/locationMapping", method = RequestMethod.GET)
public void showLocationMappings(ModelMap model) {
List<DHISOrganisationUnit> orgUnits = Context.getService(DHISConnectorService.class).getDHISOrgUnits();

model.addAttribute("locations", Context.getLocationService().getAllLocations(true));
model.addAttribute("orgUnits", orgUnits);
model.addAttribute("locationToOrgUnitMappings", Context.getService(DHISConnectorService.class).getAllLocationToOrgUnitMappings());
model.addAttribute("showLogin", (Context.getAuthenticatedUser() == null) ? true : false);
}
}
61 changes: 61 additions & 0 deletions omod/src/main/webapp/locationMapping.jsp
@@ -0,0 +1,61 @@
<%@ include file="/WEB-INF/template/include.jsp" %>
<%@ include file="/WEB-INF/template/header.jsp" %>

<openmrs:htmlInclude file="/moduleResources/dhisconnector/flexboxgrid.min.css"/>
<openmrs:htmlInclude file="/moduleResources/dhisconnector/dhisconnector.css"/>

<%@ include file="template/localHeader.jsp" %>

<c:if test="${showLogin == 'true'}">
<c:redirect url="../../login.htm"/>
</c:if>

<h3><spring:message code="dhisconnector.locationMapping"/></h3>

<form method="post">
<table id="locationMappingTable">
<thead>
<tr>
<th><spring:message code="dhisconnector.locationMapping.location"/></th>
<th><spring:message code="dhisconnector.locationMapping.orgUnit"/></th>
</tr>
</thead>

<tbody>
<c:forEach items="${locations}" var="location">
<tr class="evenRow">

<td id="location_${location.uuid}">${location.name}</td>

<c:set value="" var="savedOrgUnitUuid"/>
<c:forEach items="${locationToOrgUnitMappings}" var="locationToOrgUnitMapping">
<c:if test="${location.id == locationToOrgUnitMapping.location.id}">
<c:set value="${locationToOrgUnitMapping.orgUnitUid}" var="savedOrgUnitUuid"/>
</c:if>
</c:forEach>

<td>
<select name="orgUnitOf_${location.uuid}">
<option></option>

<c:forEach items="${orgUnits}" var="orgUnit">
<c:set value="" var="isSelected"/>
<c:if test="${orgUnit.id == savedOrgUnitUuid}">
<c:set value="selected" var="isSelected"/>
</c:if>

<option ${isSelected} value="${orgUnit.id}">${orgUnit.name}</option>

</c:forEach>
</select>
</td>

</tr>
</c:forEach>
</tbody>
</table>
<input type="button" value="<spring:message code='dhisconnector.save'/>">
</form>

<%@ include file="/WEB-INF/template/footer.jsp" %>
<%@ include file="jembiOpenMRSFooter.jsp" %>
9 changes: 8 additions & 1 deletion omod/src/main/webapp/template/localHeader.jsp
Expand Up @@ -10,7 +10,14 @@
href="${pageContext.request.contextPath}/module/dhisconnector/configureServer.form"><spring:message
code="dhisconnector.configureServer" /></a>
</li>


<li
<c:if test='<%= request.getRequestURI().contains("/locationMapping") %>'>class="active"</c:if>>
<a
href="${pageContext.request.contextPath}/module/dhisconnector/locationMapping.form"><spring:message
code="dhisconnector.locationMapping" /></a>
</li>

<li
<c:if test='<%= request.getRequestURI().contains("/automation") %>'>class="active"</c:if>>
<a
Expand Down

0 comments on commit ef06831

Please sign in to comment.