package info.ozkan.vipera.business.notification; import info.ozkan.vipera.entities.Doctor; import info.ozkan.vipera.entities.DoctorNotificationSetting; import info.ozkan.vipera.entities.HealthData; import info.ozkan.vipera.entities.HealthDataValue; import info.ozkan.vipera.entities.Notification; import info.ozkan.vipera.entities.Patient; import java.util.ArrayList; import java.util.List; /** * Sağlık verilerinden hekimlere gönderilecek olan bildirimleri üretir * * @author Ömer Özkan * */ public class NotificationGenerator { /** * Sağlık verilerinden bildirim üretir * * @param healthData * Sağlık verisi * @param filteredValues * {@link HealthDataNotificationFilter} ile üretilen sağlık * değerleri * @return bildirim listesi */ public List<Notification> generate(final HealthData healthData, final List<HealthDataValue> filteredValues) { final List<Notification> generated = new ArrayList<Notification>(); final Patient patient = healthData.getPatient(); final List<Doctor> doctors = patient.getDoctors(); for (final Doctor doctor : doctors) { final List<Notification> doctorNotifications = createNotifications(filteredValues, patient, doctor); generated.addAll(doctorNotifications); } return generated; } /** * Hekime ait ibldirimleri üretir * * @param filteredValues * @param patient * @param doctor * @return */ private List<Notification> createNotifications( final List<HealthDataValue> filteredValues, final Patient patient, final Doctor doctor) { final List<Notification> generated = new ArrayList<Notification>(); final List<DoctorNotificationSetting> settings = doctor.getSettings(); for (final DoctorNotificationSetting setting : settings) { if (setting.getEnabled() != null && setting.getEnabled()) { for (final HealthDataValue value : filteredValues) { final String provider = setting.getProviderId(); final Notification notification = new Notification(patient, doctor, provider, value); generated.add(notification); } } } return generated; } }