/** * Parses the event and creates a {@link org.motechproject.dhis2.rest.domain.DataValueDto} which * is then sent to the DHIS2 server via {@link * org.motechproject.dhis2.rest.service.DhisWebService} * * @param event */ @MotechListener(subjects = EventSubjects.SEND_DATA_VALUE) public void handleDataValue(MotechEvent event) { Map<String, Object> params = event.getParameters(); DataElement dataElement = dataElementService.findByName((String) params.get(EventParams.DATA_ELEMENT)); if (dataElement == null) { throw new DataElementNotFoundException( "The data element " + params.get(EventParams.DATA_ELEMENT) + " that was sent did not match any values imported from DHIS2. Please make sure that the " + "data element field matches a data element name in the DHIS2 module"); } String orgUnitId = (String) params.get(EventParams.LOCATION); String period = (String) params.get(EventParams.PERIOD); String value = (String) params.get(EventParams.VALUE); String categoryOptionCombo = (String) params.get(EventParams.CATEGORY_OPTION_COMBO); String comment = (String) params.get(EventParams.COMMENT); DataValueDto dataValueDto = new DataValueDto(); dataValueDto.setDataElement(dataElement.getUuid()); dataValueDto.setValue(value); dataValueDto.setOrgUnit(orgUnitId); dataValueDto.setPeriod(period); dataValueDto.setCategoryOptionCombo(categoryOptionCombo); dataValueDto.setComment(comment); DataValueSetDto dataValueSetDto = new DataValueSetDto(); List<DataValueDto> dataValueDtos = new ArrayList<>(); dataValueDtos.add(dataValueDto); dataValueSetDto.setDataValues(dataValueDtos); dhisWebService.sendDataValueSet(dataValueSetDto); }