Skip to content

Commit

Permalink
Merge 93a7ae9 into 44f4483
Browse files Browse the repository at this point in the history
  • Loading branch information
rehammuzzamil committed Jun 25, 2020
2 parents 44f4483 + 93a7ae9 commit d3afa17
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/main/java/org/smartregister/domain/Action.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ public class Action {

private String definitionUri;

private DynamicValue dynamicValue;

@AllArgsConstructor
@NoArgsConstructor
@Getter
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/org/smartregister/domain/DynamicValue.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.smartregister.domain;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.Builder;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Builder(toBuilder = true)
public class DynamicValue {

private String path;

private Expression expression;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.UUID;
import java.util.logging.Logger;

import com.ibm.fhir.path.FHIRPathElementNode;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.smartregister.domain.Action;
Expand Down Expand Up @@ -45,7 +46,12 @@ public void generateTask(Resource resource, Action action, String planIdentifier
task.setExecutionEndDate(getDateTime(action.getTimingPeriod(), false));
task.setAuthoredOn(DateTime.now());
task.setLastModified(DateTime.now());
task.setBusinessStatus("Not Visited");
if (action.getDynamicValue() != null && action.getDynamicValue().getExpression() != null &&
action.getDynamicValue().getExpression().getName().equals("defaultBusinessStatus")) {
task.setBusinessStatus(action.getDynamicValue().getExpression().getExpression());
} else {
task.setBusinessStatus("Not Visited");
}
task.setRequester(username);
task.setOwner(username);
TaskDao taskDao = PathEvaluatorLibrary.getInstance().getTaskProvider().getTaskDao();
Expand Down
65 changes: 64 additions & 1 deletion src/test/java/org/smartregister/pathevaluator/TestData.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,65 @@ public class TestData {
.registerTypeAdapter(LocalDate.class, new DateTypeConverter()).create();

public static String plan = "{\"identifier\":\"d18f15ec-afaf-42f3-ba96-d207c456645b\",\"version\":\"2\",\"name\":\"A1-59ad4fa0-1945-4b50-a6e3-a056a7cdceb2-2019-09-09\",\"title\":\"A1 - Ban Khane Chu OA - 2019-09-09(deprecated)\",\"status\":\"retired\",\"date\":\"2019-09-09\",\"effectivePeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-29\"},\"useContext\":[{\"code\":\"interventionType\",\"valueCodableConcept\":\"FI\"},{\"code\":\"fiStatus\",\"valueCodableConcept\":\"A1\"},{\"code\":\"fiReason\",\"valueCodableConcept\":\"Routine\"},{\"code\":\"caseNum\",\"valueCodableConcept\":\"3336\"},{\"code\":\"opensrpEventId\",\"valueCodableConcept\":\"75049cd6-d77b-4239-9092-7bd1aa0d438c\"},{\"code\":\"taskGenerationStatus\",\"valueCodableConcept\":\"True\"}],\"jurisdiction\":[{\"code\":\"59ad4fa0-1945-4b50-a6e3-a056a7cdceb2\"}],\"serverVersion\":1568110931837,\"goal\":[{\"id\":\"Case_Confirmation\",\"description\":\"Confirm the index case\",\"priority\":\"medium-priority\",\"target\":[{\"measure\":\"Number of cases confirmed\",\"detail\":{\"detailQuantity\":{\"value\":1,\"comparator\":\">=\",\"unit\":\"case(s)\"}},\"due\":\"2019-09-19\"}]},{\"id\":\"RACD_register_families\",\"description\":\"Register all families and family members in all residential structures enumerated or added (100%) within operational area\",\"priority\":\"medium-priority\",\"target\":[{\"measure\":\"Percent of residential structures with full family registration\",\"detail\":{\"detailQuantity\":{\"value\":100,\"comparator\":\">=\",\"unit\":\"Percent\"}},\"due\":\"2019-09-29\"}]},{\"id\":\"RACD_Blood_Screening\",\"description\":\"Visit all residential structures (100%) within a 1 km radius of a confirmed index case and test each registered person\",\"priority\":\"medium-priority\",\"target\":[{\"measure\":\"Number of registered people tested\",\"detail\":{\"detailQuantity\":{\"value\":50,\"comparator\":\">=\",\"unit\":\"Person(s)\"}},\"due\":\"2019-09-29\"}]},{\"id\":\"RACD_bednet_distribution\",\"description\":\"Visit 100% of residential structures in the operational area and provide nets\",\"priority\":\"medium-priority\",\"target\":[{\"measure\":\"Percent of residential structures received nets\",\"detail\":{\"detailQuantity\":{\"value\":90,\"comparator\":\">=\",\"unit\":\"Percent\"}},\"due\":\"2019-09-29\"}]},{\"id\":\"Larval_Dipping\",\"description\":\"Perform a minimum of three larval dipping activities in the operational area\",\"priority\":\"medium-priority\",\"target\":[{\"measure\":\"Number of larval dipping activities completed\",\"detail\":{\"detailQuantity\":{\"value\":3,\"comparator\":\">=\",\"unit\":\"activit(y|ies)\"}},\"due\":\"2019-09-29\"}]},{\"id\":\"Mosquito_Collection\",\"description\":\"Set a minimum of three mosquito collection traps and complete the mosquito collection process\",\"priority\":\"medium-priority\",\"target\":[{\"measure\":\"Number of mosquito collection activities completed\",\"detail\":{\"detailQuantity\":{\"value\":3,\"comparator\":\">=\",\"unit\":\"activit(y|ies)\"}},\"due\":\"2019-09-29\"}]},{\"id\":\"BCC_Focus\",\"description\":\"Complete at least 1 BCC activity for the operational area\",\"priority\":\"medium-priority\",\"target\":[{\"measure\":\"Number of BCC Activities Completed\",\"detail\":{\"detailQuantity\":{\"value\":1,\"comparator\":\">=\",\"unit\":\"activit(y|ies)\"}},\"due\":\"2019-09-29\"}]}],\"action\":[{\"identifier\":\"baebfd98-2f1f-4a5e-9478-680f13b45697\",\"prefix\":1,\"title\":\"Case Confirmation\",\"description\":\"Confirm the index case\",\"code\":\"Case Confirmation\",\"timingPeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-19\"},\"reason\":\"Investigation\",\"goalId\":\"Case_Confirmation\",\"subjectCodableConcept\":{\"text\":\"Case_Confirmation\"},\"taskTemplate\":\"Case_Confirmation\"},{\"identifier\":\"9f554b5a-0d00-4f18-996f-30dce50e57d8\",\"prefix\":2,\"title\":\"Family Registration\",\"description\":\"Register all families & family members in all residential structures enumerated (100%) within the operational area\",\"code\":\"RACD Register Family\",\"timingPeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-29\"},\"reason\":\"Investigation\",\"goalId\":\"RACD_register_families\",\"subjectCodableConcept\":{\"text\":\"Residential_Structure\"},\"taskTemplate\":\"RACD_register_families\"},{\"identifier\":\"28164940-e2cb-4622-8153-b6ac8ff6e940\",\"prefix\":3,\"title\":\"Blood screening\",\"description\":\"Visit all residential structures (100%) within a 1 km radius of a confirmed index case and test each registered person\",\"code\":\"Blood Screening\",\"timingPeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-29\"},\"reason\":\"Investigation\",\"goalId\":\"RACD_Blood_Screening\",\"subjectCodableConcept\":{\"text\":\"Person\"},\"taskTemplate\":\"RACD_Blood_Screening\"},{\"identifier\":\"b9f68512-376f-49c9-bb53-80d9e81a73d2\",\"prefix\":4,\"title\":\"Bednet Distribution\",\"description\":\"Visit 100% of residential structures in the operational area and provide nets\",\"code\":\"Bednet Distribution\",\"timingPeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-29\"},\"reason\":\"Routine\",\"goalId\":\"RACD_bednet_distribution\",\"subjectCodableConcept\":{\"text\":\"Residential_Structure\"},\"taskTemplate\":\"Bednet_Distribution\"},{\"identifier\":\"3b3f265d-05fe-4c16-a5a1-141bac82f128\",\"prefix\":5,\"title\":\"Larval Dipping\",\"description\":\"Perform a minimum of three larval dipping activities in the operational area\",\"code\":\"Larval Dipping\",\"timingPeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-29\"},\"reason\":\"Investigation\",\"goalId\":\"Larval_Dipping\",\"subjectCodableConcept\":{\"text\":\"Breeding_Site\"},\"taskTemplate\":\"Larval_Dipping\"},{\"identifier\":\"c295655a-8630-4bc1-a5fd-79b22a9b1125\",\"prefix\":6,\"title\":\"Mosquito Collection\",\"description\":\"Set a minimum of three mosquito collection traps and complete the mosquito collection process\",\"code\":\"Mosquito Collection\",\"timingPeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-29\"},\"reason\":\"Investigation\",\"goalId\":\"Mosquito_Collection\",\"subjectCodableConcept\":{\"text\":\"Mosquito_Collection_Point\"},\"taskTemplate\":\"Mosquito_Collection_Point\"},{\"identifier\":\"8b899c73-56c8-40a2-a738-6a62b459e8f8\",\"prefix\":7,\"title\":\"Behaviour Change Communication\",\"description\":\"Conduct BCC activity\",\"code\":\"BCC\",\"timingPeriod\":{\"start\":\"2019-09-09\",\"end\":\"2019-09-29\"},\"reason\":\"Investigation\",\"goalId\":\"BCC_Focus\",\"subjectCodableConcept\":{\"text\":\"Operational_Area\"},\"taskTemplate\":\"BCC_Focus\"}]}";


public static String plan_1 = "{\n"
+ "\"identifier\": \"3204259e-1109-4baf-934b-05662d51bbd0\",\n"
+ "\"version\": \"1\",\n"
+ "\"name\": \"MDA-2020-06-23-Dynamic-Task-Test-Plan\",\n"
+ "\"title\": \"MDA 2020-06-23 Dynamic Task Test Plan\",\n"
+ "\"status\": \"active\",\n"
+ "\"date\": \"2020-06-23\",\n"
+ "\"effectivePeriod\": {\n"
+ "\"start\": \"2020-06-23\",\n"
+ "\"end\": \"2020-12-31\"\n"
+ "},\n"
+ "\"useContext\": [],\n"
+ "\"jurisdiction\": [{\n"
+ "\"code\": \"45017166-cc14-4f2f-b83f-4a72ce17bf91\"\n"
+ "}],\n"
+ "\"action\": [{\n"
+ "\"identifier\": \"3802af3a-f40c-4705-849e-1727b603bd4e\",\n"
+ "\"prefix\": 1,\n"
+ "\"title\": \"Family Registration\",\n"
+ "\"description\": \"Register all families and family members in all residential structures enumerated (100%) within the operational area\",\n"
+ "\"code\": \"RACD Register Family\",\n"
+ "\"trigger\": [{\n"
+ "\"type\": \"named-event\",\n"
+ "\"name\": \"plan_activation\"\n"
+ "},\n"
+ "{\n"
+ "\"type\": \"named-event\",\n"
+ "\"name\": \"event-submission\",\n"
+ "\"condition\": {\n"
+ "\"expression\": \"questionnaire = 'Register_Structure'\"\n"
+ "}\n"
+ "}\n"
+ "],\n"
+ "\"condition\": [{\n"
+ "\"kind\": \"applicability\",\n"
+ "\"expression\": {\n"
+ "\"expression\": \"Location.type.where(id='locationType').text = 'Residential Structure'\"\n"
+ "}\n"
+ "}],\n"
+ "\"timingPeriod\": {\n"
+ "\"start\": \"2020-06-04\",\n"
+ "\"end\": \"2020-10-01\"\n"
+ "},\n"
+ "\"reason\": \"Routine\",\n"
+ "\"goalId\": \"RACD_register_all_families\",\n"
+ "\"subjectCodableConcept\": {\n"
+ "\"text\": \"Location\"\n"
+ "},\n"
+ "\"definitionUri\": \"zambia_family_register.json\",\n"
+ "\"dynamicValue\": {\n"
+ "\"expression\": {\n"
+ "\"name\": \"defaultBusinessStatus\",\n"
+ "\"expression\": \"expression\"\n"
+ "}\n"
+ "}\n"
+ "}]\n"
+ "}";

public static PlanDefinition createPlan() {
return gson.fromJson(plan, PlanDefinition.class);
}
Expand Down Expand Up @@ -72,4 +130,9 @@ public static QuestionnaireResponse createResponse() {
.subject(Reference.builder().reference(of("098787kml-jsks09")).build()).item(structureType, businessStatus)
.build();
}

public static PlanDefinition createPlanV1() {
//TODO : Define expression
return gson.fromJson(plan_1, PlanDefinition.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.smartregister.domain.Action;
import org.smartregister.domain.PlanDefinition;
import org.smartregister.domain.Task;
import org.smartregister.pathevaluator.PathEvaluatorLibrary;
import org.smartregister.pathevaluator.TestData;
Expand All @@ -16,6 +17,7 @@
import java.util.UUID;

import static org.mockito.ArgumentMatchers.any;
import static org.smartregister.pathevaluator.TestData.createPlanV1;

@RunWith(MockitoJUnitRunner.class)
public class TaskHelperTest {
Expand Down Expand Up @@ -54,4 +56,13 @@ public void testGenerateTask() {
Mockito.doNothing().when(taskDao).saveTask(any(Task.class));
taskHelper.generateTask(patient, action, planIdentifier, jurisdiction, "testUser");
}

@Test
public void testGenerateTaskWithDefaultBusinessStatus() {
String planIdentifier = UUID.randomUUID().toString();
String jurisdiction = "12123";
PlanDefinition planDefinition = createPlanV1();
Mockito.doNothing().when(taskDao).saveTask(any(Task.class));
taskHelper.generateTask(patient, planDefinition.getActions().get(0), planIdentifier, jurisdiction, "testUser");
}
}

0 comments on commit d3afa17

Please sign in to comment.