tlo.methods.bladder_cancer module

Bladder Cancer Disease Module

Limitations to note: * Needs to represent the the DxTest ‘cytoscopy_blood_urine_bladder_cancer’ requires use of a cytoscope * Footprints of HSI – pending input from expert on resources required.

class BladderCancer(name=None, resourcefilepath=None)[source]

Bladder Cancer Disease Module

Bases: tlo.core.Module

PARAMETERS:

Item

Type

Description

init_prop_bladder_cancer_stage

LIST

initial proportions in bladder cancer categories for person aged 15-19 and no tobacco and no schisto_h

init_prop_blood_urine_bladder_cancer_by_stage

LIST

initial proportions of those with bladder cancer categories that have the symptom blood urine

init_prop_pelvic_pain_bladder_cancer_by_stage

LIST

initial proportions of those with bladder cancer categories that have pelvic pain

init_prop_with_blood_urine_diagnosed_bladder_cancer_by_stage

LIST

initial proportions of people that have symptom of blood urine that have been diagnosed

init_prop_with_pelvic_pain_diagnosed_bladder_cancer_by_stage

LIST

initial proportions of people that have symptom of pelvic pain that have been diagnosed

init_prop_treatment_status_bladder_cancer

LIST

initial proportions of people with bladder cancer that had initiated treatment

init_prob_palliative_care

REAL

initial probability of being under palliative care if in metastatic

r_tis_t1_bladder_cancer_none

REAL

probability per 3 months of incident tis_t1 bladder cancer, amongst people with no bladder cancer(for person aged 15-19 and no tobacco and no schisto_h)

rr_tis_t1_bladder_cancer_none_age3049

REAL

rate ratio for tis_t1 bladder cancer for age 30-49

rr_tis_t1_bladder_cancer_none_age5069

REAL

rate ratio for tis_t1 bladder cancer for age 50-69

rr_tis_t1_bladder_cancer_none_agege70

REAL

rate ratio for tis_t1 bladder cancer for age 70+

rr_tis_t1_bladder_cancer_none_tobacco

REAL

rate ratio for tis_t1 bladder cancer for tobacco smokers

rr_tis_t1_bladder_cancer_none_schisto_h

REAL

rate ratio for tis_t1 bladder cancer for schisto_h

r_t2p_bladder_cancer_tis_t1

REAL

probability per 3 months of t2+ bladder cancer, amongst people with tis_t1 bladder cancer

rr_t2p_bladder_cancer_undergone_curative_treatment

REAL

rate ratio for t2+ bladder cancer for people with tis_t1 bladder cancer if had curative treatment at tis_t1 bladder cancer stage

r_metastatic_t2p_bladder_cancer

REAL

probability per 3 months of metastatic bladder cancer amongst people with t2+ bladder cancer

rr_metastatic_undergone_curative_treatment

REAL

rate ratio for metastatic bladder cancer for people with t2+ bladder cancer if had curative treatment at t2+ bladder cancer stage

rate_palliative_care_metastatic

REAL

prob palliative care this 3 month period if metastatic bladder cancer

r_death_bladder_cancer

REAL

probability per 3 months of death from bladder cancer amongst people with metastatic bladder cancer

r_blood_urine_tis_t1_bladder_cancer

REAL

probability per 3 months of blood_urine in a person with tis_t1 bladder cancer

rr_blood_urine_t2p_bladder_cancer

REAL

rate ratio for blood_urine if have t2p bladder cancer

rr_blood_urine_metastatic_bladder_cancer

REAL

rate ratio for blood_urine if have metastatic bladder cancer

r_pelvic_pain_tis_t1_bladder_cancer

REAL

probability per 3 months of pelvic_pain in a person with tis_t1 bladder cancer

rr_pelvic_pain_t2p_bladder_cancer

REAL

rate ratio for pelvic_pain if have t2p bladder cancer

rr_pelvic_pain_metastatic_bladder_cancer

REAL

rate ratio for pelvic_pain if have metastatic bladder cancer

rp_bladder_cancer_age3049

REAL

relative prevalence at baseline of bladder cancer/cancer age 30-49

rp_bladder_cancer_age5069

REAL

relative prevalence at baseline of bladder cancer/cancer age 50-69

rp_bladder_cancer_agege70

REAL

relative prevalence at baseline of bladder cancer/cancer age 70+

rp_bladder_cancer_tobacco

REAL

relative prevalence at baseline of bladder cancer if tobacco

rp_bladder_cancer_schisto_h

REAL

relative prevalence at baseline of bladder cancer if schisto_h

sensitivity_of_cytoscopy_for_bladder_cancer_blood_urine

REAL

sensitivity of cytoscopy_for diagnosis of bladder cancer given blood urine

sensitivity_of_cytoscopy_for_bladder_cancer_pelvic_pain

REAL

sensitivity of cytoscopy_for diagnosis of bladder cancer given pelvic pain

PROPERTIES:

Item

Type

Description

bc_status

CATEGORICAL

Current status of the health condition, bladder cancer. Possible values are: [none, tis_t1, t2p, metastatic, ]

bc_date_diagnosis

DATE

the date of diagnosis of the bladder cancer (pd.NaT if never diagnosed)

bc_date_treatment

DATE

date of first receiving attempted curative treatment (pd.NaT if never started treatment)

bc_stage_at_which_treatment_given

CATEGORICAL

the cancer stage at which treatment is given (because the treatment only has an effect during the stageat which it is given . Possible values are: [none, tis_t1, t2p, metastatic, ]

bc_date_palliative_care

DATE

date of first receiving palliative care (pd.NaT is never had palliative care)

bc_date_death

DATE

date bc death

Class attributes:

CAUSES_OF_DEATH : {‘BladderCancer’: <tlo.methods.causes.Cause object at 0x135ee9250>}

CAUSES_OF_DISABILITY : {‘BladderCancer’: <tlo.methods.causes.Cause object at 0x135eebb10>}

INIT_DEPENDENCIES : {‘SymptomManager’, ‘Demography’, ‘Lifestyle’, ‘HealthSystem’}

METADATA : {<Metadata.USES_SYMPTOMMANAGER: 2>, <Metadata.USES_HEALTHBURDEN: 4>, <Metadata.USES_HEALTHSYSTEM: 3>, <Metadata.DISEASE_MODULE: 1>}

OPTIONAL_INIT_DEPENDENCIES : {‘HealthBurden’}

Functions (defined or overridden in class BladderCancer):

__init__(name=None, resourcefilepath=None)[source]

Construct a new disease module ready to be included in a simulation.

Initialises an empty parameters dictionary and module-specific random number generator.

Parameters:

name – the name to use for this module. Defaults to the concrete subclass’ name.

read_parameters(data_folder)[source]

Setup parameters used by the module, now including disability weights

initialise_population(population)[source]

Set property values for the initial population.

initialise_simulation(sim)[source]
  • Schedule the main polling event

  • Schedule the main logging event

  • Define the LinearModels

  • Define the Diagnostic used

  • Define the Disability-weights

  • Schedule the palliative care appointments for those that are on palliative care at initiation

on_birth(mother_id, child_id)[source]

Initialise properties for a newborn individual. :param mother_id: the mother for this child :param child_id: the new child

on_hsi_alert(person_id, treatment_id)[source]
report_daly_values()[source]
do_at_generic_first_appt(patient_id: int, patient_details: PatientDetails, symptoms: List[str], **kwargs) IndividualPropertyUpdates[source]

Actions to be take during a NON-emergency generic HSI.

Derived classes should overwrite this method so that they are compatible with the HealthSystem module, and can schedule HSI events when a patient presents symptoms indicative of the corresponding illness or condition.

When overwriting, arguments that are not required can be left out of the definition. If done so, the method MUST take a **kwargs input to avoid errors when looping over all disease modules and running their generic HSI methods.

HSI_Events should be scheduled by the Module implementing this method using the Module.healthsystem.schedule_hsi() method. However, they should not write updates back to the population DataFrame in this method - these values should be returned as a dictionary as described below:

The return value of this function should be a dictionary containing any changes that need to be made to the individual’s row in the population DataFrame. Key/value pairs should be the column name and the new value to assign to the patient. In the event no updates are required; return an object that evaluates to False when cast to a bool. Your options are: - Omit a return statement and value (preferred). - Return an empty dictionary. Use this case when patient details might need updating conditionally, on EG patient symptoms or consumable availability. In which case, an empty dictionary should be created and key-value pairs added to this dictionary as such conditionals are checked. If no conditionals are met, the empty dictionary will be returned. - Use a return statement with no values (use if the logic of your module-specific method necessitates the explicit return). - Return None (not recommended, use “return” on its own, as above).

Parameters:
  • patient_id – Row index (ID) of the individual target of the HSI event in the population DataFrame.

  • patient_details – Patient details as provided in the population DataFrame.

  • symptoms – List of symptoms the patient is experiencing.

  • diagnosis_function – A function that can run diagnosis tests based on the patient’s symptoms.

  • consumables_checker – A function that can query the HealthSystem to check for available consumables.

  • facility_level – The level of the facility that the patient presented at.

  • treatment_id – The treatment id of the HSI event triggering the generic appointment.

  • random_state – Random number generator to be used when making random choices during event creation.

class BladderCancerMainPollingEvent(module)[source]

Regular event that updates all bladder cancer properties for population: * Acquisition and progression of bladder Cancer * Symptom Development according to stage of bladder Cancer * Deaths from bladder Cancer for those in metastatic

Bases: tlo.events.RegularEvent, tlo.events.Event, tlo.events.PopulationScopeEventMixin

Class attributes:

__annotations__ : {}

Functions (defined or overridden in class BladderCancerMainPollingEvent):

__init__(module)[source]

Create a new regular event.

Parameters:
  • module – the module that created this event

  • frequency (pandas.tseries.offsets.DateOffset) – the interval from one occurrence to the next (must be supplied as a keyword argument)

apply(population)[source]

Apply this event to the given target.

This is a no-op; subclasses should override this method.

Parameters:

target – the target of the event

class HSI_BladderCancer_Investigation_Following_Blood_Urine(module, person_id)[source]

This event is scheduled by HSI_GenericFirstApptAtFacilityLevel1 following presentation for care with the symptom blood_urine. This event begins the investigation that may result in diagnosis of Bladder Cancer and the scheduling of treatment or palliative care. It is for people with the symptom blood_urine.

Bases: tlo.methods.hsi_event.HSI_Event, tlo.events.IndividualScopeEventMixin

Class attributes:

__annotations__ : {}

Functions (defined or overridden in class HSI_BladderCancer_Investigation_Following_Blood_Urine):

__init__(module, person_id)[source]

Create a new event.

Note that just creating an event does not schedule it to happen; that must be done by calling Simulation.schedule_event.

Parameters:

module – the module that created this event. All subclasses of Event take this as the first argument in their constructor, but may also take further keyword arguments.

apply(person_id, squeeze_factor)[source]

Apply this event to the population.

Must be implemented by subclasses.

class HSI_BladderCancer_Investigation_Following_pelvic_pain(module, person_id)[source]

Bases: tlo.methods.hsi_event.HSI_Event, tlo.events.IndividualScopeEventMixin

Class attributes:

__annotations__ : {}

Functions (defined or overridden in class HSI_BladderCancer_Investigation_Following_pelvic_pain):

__init__(module, person_id)[source]

Create a new event.

Note that just creating an event does not schedule it to happen; that must be done by calling Simulation.schedule_event.

Parameters:

module – the module that created this event. All subclasses of Event take this as the first argument in their constructor, but may also take further keyword arguments.

apply(person_id, squeeze_factor)[source]

Apply this event to the population.

Must be implemented by subclasses.

class HSI_BladderCancer_StartTreatment(module, person_id)[source]

Scheduled by HSI_bladderCancer_Investigation_Following_blood_urine or pelvic pain following a diagnosis of bladder Cancer using cytoscopy. It initiates the treatment of bladder Cancer. It is only for persons with a cancer that is not in metastatic and who have been diagnosed.

Bases: tlo.methods.hsi_event.HSI_Event, tlo.events.IndividualScopeEventMixin

Class attributes:

__annotations__ : {}

Functions (defined or overridden in class HSI_BladderCancer_StartTreatment):

__init__(module, person_id)[source]

Create a new event.

Note that just creating an event does not schedule it to happen; that must be done by calling Simulation.schedule_event.

Parameters:

module – the module that created this event. All subclasses of Event take this as the first argument in their constructor, but may also take further keyword arguments.

apply(person_id, squeeze_factor)[source]

Apply this event to the population.

Must be implemented by subclasses.

class HSI_BladderCancer_PostTreatmentCheck(module, person_id)[source]

Scheduled by HSI_BladderCancer_StartTreatment and itself. It is only for those who have undergone treatment for Bladder Cancer. If the person has developed cancer to metastatic, the patient is initiated on palliative care; otherwise a further appointment is scheduled for one year.

Bases: tlo.methods.hsi_event.HSI_Event, tlo.events.IndividualScopeEventMixin

Class attributes:

__annotations__ : {}

Functions (defined or overridden in class HSI_BladderCancer_PostTreatmentCheck):

__init__(module, person_id)[source]

Create a new event.

Note that just creating an event does not schedule it to happen; that must be done by calling Simulation.schedule_event.

Parameters:

module – the module that created this event. All subclasses of Event take this as the first argument in their constructor, but may also take further keyword arguments.

apply(person_id, squeeze_factor)[source]

Apply this event to the population.

Must be implemented by subclasses.

class HSI_BladderCancer_PalliativeCare(module, person_id)[source]
This is the event for palliative care. It does not affect the patients progress but does affect the disability

weight and takes resources from the healthsystem.

This event is scheduled by either: * HSI_bladderCancer_Investigation_Following_blood_urine following a diagnosis of bladder Cancer at metastatic. * HSI_bladderCancer_PostTreatmentCheck following progression to metastatic during treatment. * Itself for the continuance of care. It is only for persons with a cancer in metastatic.

Bases: tlo.methods.hsi_event.HSI_Event, tlo.events.IndividualScopeEventMixin

Class attributes:

__annotations__ : {}

Functions (defined or overridden in class HSI_BladderCancer_PalliativeCare):

__init__(module, person_id)[source]

Create a new event.

Note that just creating an event does not schedule it to happen; that must be done by calling Simulation.schedule_event.

Parameters:

module – the module that created this event. All subclasses of Event take this as the first argument in their constructor, but may also take further keyword arguments.

apply(person_id, squeeze_factor)[source]

Apply this event to the population.

Must be implemented by subclasses.

class BladderCancerLoggingEvent(module)[source]

The only logging event for this module

Bases: tlo.events.RegularEvent, tlo.events.Event, tlo.events.PopulationScopeEventMixin

Class attributes:

__annotations__ : {}

Functions (defined or overridden in class BladderCancerLoggingEvent):

__init__(module)[source]

schedule logging to repeat every 1 month

apply(population)[source]

Compute statistics regarding the current status of persons and output to the logger