40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using VigilCare.Simulation;
|
|
|
|
public sealed class RunStateReplayObserver : IReplayObserver
|
|
{
|
|
private readonly SimulationRunState _state;
|
|
|
|
public RunStateReplayObserver(SimulationRunState state) => _state = state;
|
|
|
|
public void Header(string name, string? description) { }
|
|
|
|
public void Info(string message) { }
|
|
|
|
public void Event(string simTime, string description) =>
|
|
_state.NoteEvent(description);
|
|
|
|
public void Waiting(double deltaMinutes, int delayMs) { }
|
|
|
|
public void Warn(string message) { }
|
|
|
|
public void Error(string message) { }
|
|
|
|
public void DryRun(string message) { }
|
|
|
|
public void Completed(ReplayResult result) => SyncFromResult(result);
|
|
|
|
public void Progress(double offsetMinutes, int clusterIndex, int clusterCount) =>
|
|
_state.UpdateOffset(offsetMinutes);
|
|
|
|
public void SyncFromResult(ReplayResult result)
|
|
{
|
|
_state.ApplyResultCounters(
|
|
result.ObservationsSent,
|
|
result.MedicationsSent,
|
|
result.OrdersPlaced);
|
|
_state.SetIds(
|
|
result.PatientId == Guid.Empty ? null : result.PatientId,
|
|
result.EncounterId == Guid.Empty ? null : result.EncounterId);
|
|
}
|
|
}
|