void EndClinicalDueToDrugResistanceEvent::execute() {
    Person* person = (Person*) dispatcher();
    if (person->all_clonal_parasite_populations()->size() == 0) {
        person->change_state_when_no_parasite_in_blood();

    } else {
        //still have parasite in blood
        person->immune_system()->set_increase(true);
        person->set_host_state(Person::ASYMPTOMATIC);
        
        if (person->all_clonal_parasite_populations()->contain(clinical_caused_parasite_)) {
            clinical_caused_parasite_->set_last_update_log10_parasite_density(Model::CONFIG->log_parasite_density_level().log_parasite_density_asymptomatic);

            person->determine_relapse_or_not(clinical_caused_parasite_);

        }
        
        //        person->determine_relapse_or_not(clinical_caused_parasite_);
        //        person->determine_clinical_or_not(clinical_caused_parasite_);

        //        if (clinical_caused_parasite_->last_update_log10_parasite_density() < Model::CONFIG->log_parasite_density_level().log_parasite_density_asymptomatic) {
        //            std::cout << clinical_caused_parasite_->last_update_log10_parasite_density()<< std::endl;
        //            assert(false);
        //        }
        //        clinical_caused_parasite_->set_last_update_log10_parasite_density(Model::CONFIG->log_parasite_density_level().log_parasite_density_asymptomatic);
        //        clinical_caused_parasite_->set_update_function(Model::MODEL->immunity_clearance_update_function());
        //        //        std::cout << "hello" << std::endl;
    }

}
void EndClinicalEvent::execute() {
    Person* person = (Person*) dispatcher();

    if (person->all_clonal_parasite_populations()->size() == 0) {
        person->change_state_when_no_parasite_in_blood();

    } else {
        //still have parasite in blood
        person->immune_system()->set_increase(true);
        person->set_host_state(Person::ASYMPTOMATIC);

        person->determine_relapse_or_not(clinical_caused_parasite_);

    }
}