TestingModel.java

package org.matsim.episim.model.testing;

import org.matsim.api.core.v01.Id;
import org.matsim.api.core.v01.population.Person;
import org.matsim.episim.EpisimPerson;
import org.matsim.episim.EpisimReporting;

import java.util.Map;

/**
 * Model to determine which persons are tested at the start of the day.
 */
public interface TestingModel {

	/**
	 * Called at the start of an iteration before executing the progression.
	 */
	default void setIteration(int day) {}

	/**
	 * Perform testing on the person and update state if necessary.
	 */
	void performTesting(EpisimPerson person, int day);

	/**
	 * Called before {@link #performTesting(EpisimPerson, int)}.
	 */
	void beforeStateUpdates(Map<Id<Person>, EpisimPerson> personMap, int iteration, EpisimReporting.InfectionReport report);
}