@Override
public ProgramInstance enrollTrackedEntityInstance( TrackedEntityInstance trackedEntityInstance,Program program,
Date enrollmentDate, Date incidentDate, OrganisationUnit organisationUnit, String uid )
{
ProgramInstance programInstance = prepareProgramInstance( trackedEntityInstance, program, ProgramStatus.ACTIVE, enrollmentDate,
incidentDate, organisationUnit, uid );
addProgramInstance( programInstance );
programNotificationPublisher.publishEnrollment( programInstance, ProgramNotificationEventType.PROGRAM_ENROLLMENT );
eventPublisher.publishEvent( new TrackedEntityInstanceEnrolledEvent( this, programInstance ) );
updateProgramInstance( programInstance );
trackedEntityInstanceService.updateTrackedEntityInstance( trackedEntityInstance );
return programInstance;
}