diff --git a/.travis.yml b/.travis.yml
index fcc4d3497..0f43688d8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,9 +7,10 @@ cache:
directories:
- .autoconf
- $HOME/.m2
+services:
+ - xvfb
install:
- export DISPLAY=:99.0
- - sh -e /etc/init.d/xvfb start
- tar -xjf /tmp/firefox-43.0.tar.bz2 --directory /tmp
- export PATH="/tmp/firefox:$PATH"
script: mvn clean install -q
\ No newline at end of file
diff --git a/omod/src/main/java/org/openmrs/module/coreapps/page/controller/conditionlist/EditConditionPageController.java b/omod/src/main/java/org/openmrs/module/coreapps/page/controller/conditionlist/EditConditionPageController.java
new file mode 100644
index 000000000..8c20d45a4
--- /dev/null
+++ b/omod/src/main/java/org/openmrs/module/coreapps/page/controller/conditionlist/EditConditionPageController.java
@@ -0,0 +1,25 @@
+package org.openmrs.module.coreapps.page.controller.conditionlist;
+
+/**
+ * The contents of this file are subject to the OpenMRS Public License
+ * Version 1.0 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://license.openmrs.org
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * Copyright (C) OpenMRS, LLC. All Rights Reserved.
+ */
+
+import org.openmrs.ui.framework.page.PageModel;
+import org.springframework.web.bind.annotation.RequestParam;
+
+public class EditConditionPageController {
+
+public void controller(PageModel model, @RequestParam(value = "returnUrl", required = false) String returnUrl) {
+ model.addAttribute("returnUrl", returnUrl);
+ }
+}
\ No newline at end of file
diff --git a/omod/src/main/webapp/pages/conditionlist/editCondition.gsp b/omod/src/main/webapp/pages/conditionlist/editCondition.gsp
new file mode 100644
index 000000000..bdbf19d11
--- /dev/null
+++ b/omod/src/main/webapp/pages/conditionlist/editCondition.gsp
@@ -0,0 +1,91 @@
+<%
+ ui.decorateWith("appui", "standardEmrPage")
+ ui.includeJavascript("uicommons", "angular.min.js")
+ ui.includeJavascript("uicommons", "angular-ui/ui-bootstrap-tpls-0.11.2.min.js")
+ ui.includeJavascript("uicommons", "angular-resource.min.js")
+ ui.includeJavascript("uicommons", "angular-common.js")
+ ui.includeJavascript("uicommons", "ngDialog/ngDialog.js")
+ ui.includeJavascript("uicommons", "ngDialog/ngDialog.js")
+ ui.includeJavascript("uicommons", "services/conceptSearchService.js")
+ ui.includeJavascript("uicommons", "directives/coded-or-free-text-answer.js")
+ ui.includeFragment("coreapps", "patientHeader", [patient: patient])
+ ui.includeJavascript("coreapps", "conditionlist/lib/restangular.min.js")
+ ui.includeJavascript("coreapps", "conditionlist/restful-services/restful-service.js");
+ ui.includeJavascript("coreapps", "conditionlist/models/model.module.js")
+ ui.includeJavascript("coreapps", "conditionlist/models/concept.model.js")
+ ui.includeJavascript("coreapps", "conditionlist/models/condition.model.js")
+ ui.includeJavascript("coreapps", "conditionlist/emr.messages.js")
+ ui.includeJavascript("coreapps", "conditionlist/common.functions.js")
+ ui.includeJavascript("coreapps", "conditionlist/controllers/editcondition.controller.js")
+ ui.includeCss("uicommons", "ngDialog/ngDialog.min.css")
+ ui.includeCss("coreapps", "conditionlist/conditions.css")
+%>
+
+
+
+
${ui.message('coreapps.conditionui.editCondition',"")}
+
+
+
+
+ ${ui.message('coreapps.conditionui.condition')}
+
+
+
+ ${ui.message('coreapps.conditionui.onsetdate')}
+ ${ui.includeFragment("uicommons", "field/datetimepicker", [
+ formFieldName: "conditionStartDate",
+ label : "",
+ useTime : false,
+ endDate : new Date(),
+ ])}
+
+
+
+ ${ui.message('coreapps.stopDate.label')}
+ ${ui.includeFragment("uicommons", "field/datetimepicker", [
+ formFieldName: "conditionEndDate",
+ label : "",
+ useTime : false,
+ endDate : new Date(),
+ ])}
+
+
+
+
+
+
+
+
+
+
+ ${ ui.message("coreapps.cancel") }
+
+
+
\ No newline at end of file
diff --git a/omod/src/main/webapp/pages/conditionlist/manageConditions.gsp b/omod/src/main/webapp/pages/conditionlist/manageConditions.gsp
index 070831b6e..6ff2b5394 100644
--- a/omod/src/main/webapp/pages/conditionlist/manageConditions.gsp
+++ b/omod/src/main/webapp/pages/conditionlist/manageConditions.gsp
@@ -82,6 +82,8 @@ ${ui.includeFragment("coreapps", "patientHeader", [patient: patient])}
{{formatDate(condition.onSetDate)}}
{{formatDate(condition.endDate)}}
+
Condition List) is set inorder to work with noncoded concepts,
+ * the LOCALE needs to be set (most concepts have 'en')
+ * @type {Function}
+ */
+ self.saveCondition = self.saveCondition || function () {
+ if($scope.condition.status == INACTIVE_STATUS && $scope.condition.onSetDate > $scope.condition.endDate){
+ emr.errorAlert("End Date can't be before Onset Date");
+ }
+ else{
+ var conditions = [];
+ conditions.push($scope.condition);
+ RestfulService.post('condition', conditions, function (data) {
+ emr.successAlert("Condition edited successfully")
+ window.location = '/' + OPENMRS_CONTEXT_PATH + '/coreapps/conditionlist/manageConditions.page?patientId=' + $scope.patientUuid + '&';
+ }, function (error) {
+ emr.errorAlert("Error Saving condition");
+ });
+ }
+ }
+
+ self.initCondition = self.initCondition || function () {
+ $scope.patientUuid = CommonFunctions.extractUrlArgs(window.location.search)['patientId'];
+ $scope.condition = new ConditionModel($scope.patientUuid)
+ $scope.conditionUuid = CommonFunctions.extractUrlArgs(window.location.search)['conditionUuid'];
+ self.getCondition($scope.conditionUuid);
+ }
+
+ self.getCondition = self.getCondition || function (conditionUuid) {
+ if (conditionUuid == null || conditionUuid == undefined) {
+ $scope.conditionUuid = CommonFunctions.extractUrlArgs(window.location.search)['conditionUUID'];
+ } else {
+ $scope.conditionUuid = conditionUuid;
+ }
+ $scope.conditionUuid = $scope.conditionUuid.substring(3,$scope.conditionUuid.length-3);
+ if ($scope.conditionUuid !== null && $scope.conditionUuid !== undefined) {
+ RestfulService.get('condition', {"conditionUuid": $scope.conditionUuid}, function (data) {
+ $scope.condition = data[0];
+ self.displayCondition();
+ }, function (error) {
+ });
+ }
+ }
+
+ self.displayCondition = self.displayCondition || function()
+ {
+ $scope.concept = {
+ display: $scope.condition.concept.name,
+ concept: {
+ display: $scope.condition.concept.name,
+ },
+ conceptName: {
+ display: $scope.condition.concept.name,
+ }
+ }
+
+ var onsetDatePicker = angular.element(document.getElementsByName('conditionStartDate'))[0];
+ onsetDatePicker.value = CommonFunctions.formatDate($scope.condition.onSetDate);
+
+ if($scope.condition.status == INACTIVE_STATUS){
+ var endDatePicker = angular.element(document.getElementsByName('conditionEndDate'))[0];
+ endDatePicker.value = CommonFunctions.formatDate($scope.condition.endDate);
+ }
+
+ var inputs = document.getElementsByTagName('input');
+ inputs[0].disabled = true;
+ inputs[1].value = CommonFunctions.formatDate($scope.condition.onSetDate);
+ self.showEndDate();
+ }
+
+
+ self.showEndDate = self.showEndDate || function() {
+ var inputs = document.getElementsByTagName('input');
+ var groups = document.getElementsByClassName("group");
+ if($scope.condition.status == INACTIVE_STATUS){
+ groups[2].style.visibility = "visible";
+ inputs[3].value = CommonFunctions.formatDate($scope.condition.endDate);
+ }
+ else{
+ groups[2].style.visibility = "hidden";
+ }
+ }
+
+ self.validateCondition = self.validateCondition || function () {
+ var concept = null ;
+ if($scope.concept.concept.uuid)
+ {
+ concept = $scope.concept.concept;
+ }
+ else{
+ concept = $scope.condition.concept;
+ }
+ if (concept !== null) {
+ $scope.condition.concept = new ConceptModel(concept.uuid, concept.display);
+ } else {
+ $scope.condition.conditionNonCoded = "NON_CODED:" + $scope.concept.word;
+ }
+
+ $scope.condition.onSetDate = self.getSelectedDate();
+ if($scope.condition.status == INACTIVE_STATUS)
+ {
+ $scope.condition.endDate = self.getEndDate();
+ }
+ self.saveCondition();
+ }
+
+ self.getSelectedDate = self.getSelectedDate || function () {
+ var datePicker = angular.element(document.getElementsByName('conditionStartDate'))[0];
+ return datePicker.value;
+ }
+
+ self.getEndDate = self.getEndDate || function() {
+ var endDatePicker = angular.element(document.getElementsByName('conditionEndDate'))[0];
+ return endDatePicker.value;
+ }
+
+ self.initCondition();
+
+ $scope.validateCondition = self.validateCondition;
+ $scope.showEndDate = self.showEndDate;
+ $scope.getEndDate = self.getEndDate;
+ $scope.formatDate = CommonFunctions.formatDate;
+ $scope.getCondition = self.getCondition;
+ $scope.displayCondition = self.displayCondition;
+}
\ No newline at end of file
diff --git a/omod/src/main/webapp/resources/scripts/conditionlist/controllers/manageconditions.controller.js b/omod/src/main/webapp/resources/scripts/conditionlist/controllers/manageconditions.controller.js
index 288bda8c7..630352497 100644
--- a/omod/src/main/webapp/resources/scripts/conditionlist/controllers/manageconditions.controller.js
+++ b/omod/src/main/webapp/resources/scripts/conditionlist/controllers/manageconditions.controller.js
@@ -46,6 +46,10 @@ function ManageConditionsController($scope, RestfulService, CommonFunctions) {
var dialog = document.getElementById("remove-condition-dialog");
dialog.style.display = "none";
}
+
+ self.redirectToEditCondition = self.redirectToEditCondition || function(baselink,condition) {
+ window.location= baselink+'conditionUuid=' + JSON.stringify(condition.uuid)+'&';
+ }
self.conditionConfirmation = self.conditionConfirmation || function(condition) {
var dialog = document.getElementById("remove-condition-dialog");
@@ -85,4 +89,5 @@ function ManageConditionsController($scope, RestfulService, CommonFunctions) {
$scope.formatDate = CommonFunctions.formatDate;
$scope.getConditions = self.getConditions;
$scope.conditionConfirmation = self.conditionConfirmation
+ $scope.redirectToEditCondition = self.redirectToEditCondition;
}
\ No newline at end of file