Search in sources :

Example 1 with ProgramRuleAction

use of org.hisp.dhis.programrule.ProgramRuleAction in project dhis2-core by dhis2.

the class ProgramRuleIntegrationTest method setUpTest.

@Override
public void setUpTest() throws Exception {
    renderService = _renderService;
    userService = _userService;
    Map<Class<? extends IdentifiableObject>, List<IdentifiableObject>> metadata = renderService.fromMetadata(new ClassPathResource("tracker/simple_metadata.json").getInputStream(), RenderFormat.JSON);
    ObjectBundleParams params = new ObjectBundleParams();
    params.setObjectBundleMode(ObjectBundleMode.COMMIT);
    params.setImportStrategy(ImportStrategy.CREATE);
    params.setObjects(metadata);
    ObjectBundle bundle = objectBundleService.create(params);
    ObjectBundleValidationReport validationReport = objectBundleValidationService.validate(bundle);
    assertFalse(validationReport.hasErrorReports());
    objectBundleService.commit(bundle);
    Program program = bundle.getPreheat().get(PreheatIdentifier.UID, Program.class, "BFcipDERJnf");
    Program programWithoutRegistration = bundle.getPreheat().get(PreheatIdentifier.UID, Program.class, "BFcipDERJne");
    DataElement dataElement1 = bundle.getPreheat().get(PreheatIdentifier.UID, DataElement.class, "DATAEL00001");
    DataElement dataElement2 = bundle.getPreheat().get(PreheatIdentifier.UID, DataElement.class, "DATAEL00002");
    ProgramStage programStage = bundle.getPreheat().get(PreheatIdentifier.UID, ProgramStage.class, "NpsdDv6kKSO");
    ProgramRuleVariable programRuleVariable = createProgramRuleVariableWithDataElement('A', program, dataElement2);
    programRuleVariableService.addProgramRuleVariable(programRuleVariable);
    ProgramRule programRuleA = createProgramRule('A', program);
    programRuleA.setUid("ProgramRule");
    programRuleService.addProgramRule(programRuleA);
    ProgramRule programRuleWithoutRegistration = createProgramRule('W', programWithoutRegistration);
    programRuleService.addProgramRule(programRuleWithoutRegistration);
    ProgramRule programRuleB = createProgramRule('B', program);
    programRuleB.setProgramStage(programStage);
    programRuleService.addProgramRule(programRuleB);
    ProgramRuleAction programRuleActionShowWarning = createProgramRuleAction('A', programRuleA);
    programRuleActionShowWarning.setProgramRuleActionType(ProgramRuleActionType.SHOWWARNING);
    programRuleActionShowWarning.setContent("WARNING");
    programRuleActionService.addProgramRuleAction(programRuleActionShowWarning);
    ProgramRuleAction programRuleActionAssign = createProgramRuleAction('C', programRuleA);
    programRuleActionAssign.setProgramRuleActionType(ProgramRuleActionType.ASSIGN);
    programRuleActionAssign.setData("#{ProgramRuleVariableA}");
    programRuleActionAssign.setDataElement(dataElement1);
    programRuleActionService.addProgramRuleAction(programRuleActionAssign);
    ProgramRuleAction programRuleActionShowWarningForProgramStage = createProgramRuleAction('B', programRuleB);
    programRuleActionShowWarningForProgramStage.setProgramRuleActionType(ProgramRuleActionType.SHOWWARNING);
    programRuleActionShowWarningForProgramStage.setContent("PROGRAM STAGE WARNING");
    programRuleActionService.addProgramRuleAction(programRuleActionShowWarningForProgramStage);
    programRuleA.getProgramRuleActions().add(programRuleActionShowWarning);
    programRuleA.getProgramRuleActions().add(programRuleActionAssign);
    programRuleWithoutRegistration.getProgramRuleActions().add(programRuleActionShowWarning);
    programRuleService.updateProgramRule(programRuleWithoutRegistration);
    programRuleB.getProgramRuleActions().add(programRuleActionShowWarningForProgramStage);
    programRuleService.updateProgramRule(programRuleB);
    userA = userService.getUser("M5zQapPyTZI");
    injectSecurityContext(userA);
}
Also used : ProgramRuleVariable(org.hisp.dhis.programrule.ProgramRuleVariable) ObjectBundleParams(org.hisp.dhis.dxf2.metadata.objectbundle.ObjectBundleParams) Program(org.hisp.dhis.program.Program) ProgramRule(org.hisp.dhis.programrule.ProgramRule) ObjectBundleValidationReport(org.hisp.dhis.dxf2.metadata.objectbundle.feedback.ObjectBundleValidationReport) ClassPathResource(org.springframework.core.io.ClassPathResource) IdentifiableObject(org.hisp.dhis.common.IdentifiableObject) DataElement(org.hisp.dhis.dataelement.DataElement) ProgramRuleAction(org.hisp.dhis.programrule.ProgramRuleAction) ObjectBundle(org.hisp.dhis.dxf2.metadata.objectbundle.ObjectBundle) List(java.util.List) ProgramStage(org.hisp.dhis.program.ProgramStage)

Example 2 with ProgramRuleAction

use of org.hisp.dhis.programrule.ProgramRuleAction in project dhis2-core by dhis2.

the class BaseProgramRuleActionValidator method handleTrackedEntityAttribute.

private ProgramRuleActionValidationResult handleTrackedEntityAttribute(ProgramRuleActionValidationContext validationContext, ProgramRuleAction programRuleAction, Program program) {
    ProgramRule rule = validationContext.getProgramRule();
    TrackedEntityAttribute attribute = validationContext.getTrackedEntityAttribute();
    if (attribute == null) {
        log.debug(String.format("TrackedEntityAttribute: %s associated with program rule: %s does not exist", programRuleAction.getAttribute().getUid(), rule.getName()));
        return ProgramRuleActionValidationResult.builder().valid(false).errorReport(new ErrorReport(TrackedEntityAttribute.class, ErrorCode.E4046, programRuleAction.getAttribute().getUid(), rule.getName())).build();
    }
    List<String> trackedEntityAttributes = program.getProgramAttributes().stream().map(att -> att.getAttribute().getUid()).collect(Collectors.toList());
    if (!trackedEntityAttributes.contains(attribute.getUid())) {
        log.debug(String.format("TrackedEntityAttribute: %s is not linked to any ProgramTrackedEntityAttribute", attribute.getUid()));
        return ProgramRuleActionValidationResult.builder().valid(false).errorReport(new ErrorReport(TrackedEntityAttribute.class, ErrorCode.E4048, attribute.getUid(), rule.getName())).build();
    }
    return ProgramRuleActionValidationResult.builder().valid(true).build();
}
Also used : ErrorReport(org.hisp.dhis.feedback.ErrorReport) ErrorReport(org.hisp.dhis.feedback.ErrorReport) ProgramRuleActionValidationResult(org.hisp.dhis.programrule.ProgramRuleActionValidationResult) Set(java.util.Set) Collectors(java.util.stream.Collectors) ProgramRuleAction(org.hisp.dhis.programrule.ProgramRuleAction) Program(org.hisp.dhis.program.Program) ProgramStage(org.hisp.dhis.program.ProgramStage) DataElement(org.hisp.dhis.dataelement.DataElement) ProgramRule(org.hisp.dhis.programrule.ProgramRule) List(java.util.List) Slf4j(lombok.extern.slf4j.Slf4j) Component(org.springframework.stereotype.Component) Optional(java.util.Optional) ErrorCode(org.hisp.dhis.feedback.ErrorCode) TrackedEntityAttribute(org.hisp.dhis.trackedentity.TrackedEntityAttribute) ProgramRule(org.hisp.dhis.programrule.ProgramRule) TrackedEntityAttribute(org.hisp.dhis.trackedentity.TrackedEntityAttribute)

Example 3 with ProgramRuleAction

use of org.hisp.dhis.programrule.ProgramRuleAction in project dhis2-core by dhis2.

the class ProgramRuleEngineTest method setUpAssignValueAge.

private void setUpAssignValueAge() {
    ProgramNotificationTemplate pnt = createNotification();
    programNotificationTemplateStore.save(pnt);
    ProgramRuleAction programRuleActionAssignValueAge = createProgramRuleAction('P', programRuleA2);
    programRuleActionAssignValueAge.setProgramRuleActionType(ProgramRuleActionType.SENDMESSAGE);
    programRuleActionAssignValueAge.setData(" d2:yearsBetween(#{AGE}, V{event_date})");
    programRuleActionService.addProgramRuleAction(programRuleActionAssignValueAge);
    programRuleA2.setProgramRuleActions(Sets.newHashSet(programRuleActionAssignValueAge));
    programRuleService.updateProgramRule(programRuleA2);
}
Also used : ProgramRuleAction(org.hisp.dhis.programrule.ProgramRuleAction) ProgramNotificationTemplate(org.hisp.dhis.program.notification.ProgramNotificationTemplate)

Example 4 with ProgramRuleAction

use of org.hisp.dhis.programrule.ProgramRuleAction in project dhis2-core by dhis2.

the class ProgramRuleEngineTest method setUpAssignValueDate.

private void setUpAssignValueDate() {
    ProgramNotificationTemplate pnt = createNotification();
    programNotificationTemplateStore.save(pnt);
    ProgramRuleAction programRuleActionAssignValueDate = createProgramRuleAction('P', programRuleA2);
    programRuleActionAssignValueDate.setProgramRuleActionType(ProgramRuleActionType.SENDMESSAGE);
    programRuleActionAssignValueDate.setData(" d2:yearsBetween(#{DOB}, V{event_date})");
    programRuleActionService.addProgramRuleAction(programRuleActionAssignValueDate);
    programRuleA2.setProgramRuleActions(Sets.newHashSet(programRuleActionAssignValueDate));
    programRuleA2.setCondition(" d2:hasValue(#{DOB})");
    programRuleService.updateProgramRule(programRuleA2);
}
Also used : ProgramRuleAction(org.hisp.dhis.programrule.ProgramRuleAction) ProgramNotificationTemplate(org.hisp.dhis.program.notification.ProgramNotificationTemplate)

Example 5 with ProgramRuleAction

use of org.hisp.dhis.programrule.ProgramRuleAction in project dhis2-core by dhis2.

the class ProgramRuleEngineTest method setUpScheduleMessage.

private void setUpScheduleMessage() {
    scheduledDate = "2018-04-17";
    pnt = createNotification();
    programNotificationTemplateStore.save(pnt);
    ProgramRuleAction programRuleActionForScheduleMessage = createProgramRuleAction('S', programRuleS);
    programRuleActionForScheduleMessage.setProgramRuleActionType(ProgramRuleActionType.SCHEDULEMESSAGE);
    programRuleActionForScheduleMessage.setTemplateUid(pnt.getUid());
    programRuleActionForScheduleMessage.setContent("STATIC-TEXT-SCHEDULE");
    programRuleActionForScheduleMessage.setData(dataExpression);
    programRuleActionService.addProgramRuleAction(programRuleActionForScheduleMessage);
    programRuleS.setProgramRuleActions(Sets.newHashSet(programRuleActionForScheduleMessage));
    programRuleService.updateProgramRule(programRuleS);
}
Also used : ProgramRuleAction(org.hisp.dhis.programrule.ProgramRuleAction)

Aggregations

ProgramRuleAction (org.hisp.dhis.programrule.ProgramRuleAction)10 ProgramNotificationTemplate (org.hisp.dhis.program.notification.ProgramNotificationTemplate)4 Program (org.hisp.dhis.program.Program)3 ProgramRule (org.hisp.dhis.programrule.ProgramRule)3 List (java.util.List)2 DataElement (org.hisp.dhis.dataelement.DataElement)2 ObjectBundle (org.hisp.dhis.dxf2.metadata.objectbundle.ObjectBundle)2 ProgramStage (org.hisp.dhis.program.ProgramStage)2 Optional (java.util.Optional)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 Slf4j (lombok.extern.slf4j.Slf4j)1 IdentifiableObject (org.hisp.dhis.common.IdentifiableObject)1 ObjectBundleParams (org.hisp.dhis.dxf2.metadata.objectbundle.ObjectBundleParams)1 ObjectBundleValidationReport (org.hisp.dhis.dxf2.metadata.objectbundle.feedback.ObjectBundleValidationReport)1 ErrorCode (org.hisp.dhis.feedback.ErrorCode)1 ErrorReport (org.hisp.dhis.feedback.ErrorReport)1 ProgramRuleActionValidationResult (org.hisp.dhis.programrule.ProgramRuleActionValidationResult)1 ProgramRuleVariable (org.hisp.dhis.programrule.ProgramRuleVariable)1 TrackedEntityAttribute (org.hisp.dhis.trackedentity.TrackedEntityAttribute)1