/*
* Copyright (c) 2014. The Trustees of Indiana University.
*
* This version of the code is licensed under the MPL 2.0 Open Source license with additional
* healthcare disclaimer. If the user is an entity intending to commercialize any application
* that uses this code in a for-profit venture, please contact the copyright holder.
*/
package com.muzima.model.observation;
import com.muzima.api.model.Observation;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Encounters extends ArrayList<EncounterWithObservations> {
public Encounters() {
}
public Encounters(Observation... observations) {
for (Observation observation : observations) {
addObservation(observation);
}
}
public Encounters(List<Observation> observationsByPatient) {
this(observationsByPatient.toArray(new Observation[observationsByPatient.size()]));
}
private void addObservation(final Observation observation) {
EncounterWithObservations encounterWithObservations = getRelatedEncounterWithObservations(observation);
encounterWithObservations.addObservation(observation);
}
private EncounterWithObservations getRelatedEncounterWithObservations(Observation observation) {
for (EncounterWithObservations current : this) {
if (current.getEncounter().equals(observation.getEncounter())) {
return current;
}
}
EncounterWithObservations encounterWithObservations = new EncounterWithObservations();
add(encounterWithObservations);
return encounterWithObservations;
}
public void sortByDate() {
Collections.sort(this, new Comparator<EncounterWithObservations>() {
@Override
public int compare(EncounterWithObservations lhs, EncounterWithObservations rhs) {
if (lhs.getEncounter().getEncounterDatetime()==null)
return -1;
if (rhs.getEncounter().getEncounterDatetime()==null)
return 1;
return -(lhs.getEncounter().getEncounterDatetime()
.compareTo(rhs.getEncounter().getEncounterDatetime()));
}
});
}
}