Discontinuation Manager Module

Discontinuation management for treatment simulations.

This module provides a configurable framework for managing treatment discontinuation in both Agent-Based Simulation (ABS) and Discrete Event Simulation (DES) models. It handles various discontinuation criteria, post-discontinuation monitoring, and treatment re-entry based on disease recurrence.

Key Features

  • Configuration-driven discontinuation criteria

  • Multiple discontinuation types (stable at max interval, administrative, time-based)

  • Post-discontinuation monitoring

  • Treatment re-entry based on disease recurrence

  • Consistent implementation across simulation types

Classes

DiscontinuationManager

Main class for managing treatment discontinuation logic

class simulation.discontinuation_manager.DiscontinuationManager(config)[source]

Bases: object

Manager for treatment discontinuation decisions and monitoring.

This class encapsulates all discontinuation-related logic, providing a consistent interface for both ABS and DES simulations. It evaluates different discontinuation criteria, handles patient monitoring after discontinuation, and manages re-entry into treatment when eligible.

Parameters:

config (Dict[str, Any]) – Configuration dictionary containing discontinuation parameters

Variables:
  • enabled (bool) – Whether discontinuation is enabled

  • config (Dict[str, Any]) – Configuration dictionary

  • criteria (Dict[str, Any]) – Discontinuation criteria configuration

  • monitoring (Dict[str, Any]) – Post-discontinuation monitoring configuration

  • retreatment (Dict[str, Any]) – Treatment re-entry configuration

  • stats (Dict[str, int]) – Statistics tracking discontinuation events

__init__(config)[source]

Initialize the discontinuation manager with configuration.

Parameters:

config (Dict[str, Any]) – Configuration dictionary containing discontinuation parameters

evaluate_discontinuation(patient_state, current_time, treatment_start_time=None)[source]

Evaluate whether a patient should discontinue treatment.

Parameters:
  • patient_state (Dict[str, Any]) – Current patient state including disease activity and treatment history

  • current_time (datetime) – Current simulation time

  • treatment_start_time (Optional[datetime], optional) – Time when treatment started, by default None

Returns:

Tuple containing: - discontinue: Whether to discontinue treatment - reason: Reason for discontinuation (if applicable) - probability: Probability that was used for the decision

Return type:

Tuple[bool, str, float]

schedule_monitoring(discontinuation_time)[source]

Schedule post-discontinuation monitoring visits.

Parameters:

discontinuation_time (datetime) – Time when treatment was discontinued

Returns:

List of monitoring visit events to schedule

Return type:

List[Dict[str, Any]]

evaluate_retreatment(patient_state)[source]

Evaluate whether a discontinued patient should re-enter treatment.

Parameters:

patient_state (Dict[str, Any]) – Current patient state including disease activity and vision

Returns:

Tuple containing: - retreatment: Whether to restart treatment - probability: Probability that was used for the decision

Return type:

Tuple[bool, float]

process_monitoring_visit(patient_state, actions)[source]

Process a monitoring visit for a discontinued patient.

Parameters:
  • patient_state (Dict[str, Any]) – Current patient state

  • actions (List[str]) – Actions performed during the visit

Returns:

Tuple containing: - retreatment: Whether to restart treatment - updated_state: Updated patient state

Return type:

Tuple[bool, Dict[str, Any]]

get_statistics()[source]

Get discontinuation statistics.

Returns:

Dictionary of discontinuation statistics

Return type:

Dict[str, int]