# coding: utf-8

"""
    Curia Platform API

    These are the docs for the curia platform API. To test, generate an authorization token first.  # noqa: E501

    OpenAPI spec version: 1.18.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class CohortWindow(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'patient_metadata_start_filter_enabled': 'bool',
        'patient_metadata_end_filter_enabled': 'bool',
        'cohort_logic': 'str',
        'cohort_display_logic': 'str',
        'outcome_logic': 'str',
        'intervention_logic': 'str',
        'period_definitions': 'list[PeriodDefinition]',
        'outcome_type': 'str',
        'aggregation_type': 'str',
        'aggregation_column': 'str',
        'cohort_filters': 'list[CohortFilter]',
        'outcome_aggregated_value': 'float',
        'outcome_list_query': 'str',
        'outcome_count_query': 'str',
        'intervention_list_query': 'str',
        'intervention_count_query': 'str',
        'cohort_list_query': 'str',
        'cohort_count_query': 'str',
        'outcome_count': 'float',
        'intervention_count': 'float',
        'cohort_count': 'float',
        'geographic_counts': 'GeographicCounts',
        'geographic_queries': 'GeographicQueries',
        'dataset_ids': 'list[str]'
    }

    attribute_map = {
        'patient_metadata_start_filter_enabled': 'patientMetadataStartFilterEnabled',
        'patient_metadata_end_filter_enabled': 'patientMetadataEndFilterEnabled',
        'cohort_logic': 'cohortLogic',
        'cohort_display_logic': 'cohortDisplayLogic',
        'outcome_logic': 'outcomeLogic',
        'intervention_logic': 'interventionLogic',
        'period_definitions': 'periodDefinitions',
        'outcome_type': 'outcomeType',
        'aggregation_type': 'aggregationType',
        'aggregation_column': 'aggregationColumn',
        'cohort_filters': 'cohortFilters',
        'outcome_aggregated_value': 'outcomeAggregatedValue',
        'outcome_list_query': 'outcomeListQuery',
        'outcome_count_query': 'outcomeCountQuery',
        'intervention_list_query': 'interventionListQuery',
        'intervention_count_query': 'interventionCountQuery',
        'cohort_list_query': 'cohortListQuery',
        'cohort_count_query': 'cohortCountQuery',
        'outcome_count': 'outcomeCount',
        'intervention_count': 'interventionCount',
        'cohort_count': 'cohortCount',
        'geographic_counts': 'geographicCounts',
        'geographic_queries': 'geographicQueries',
        'dataset_ids': 'datasetIds'
    }

    def __init__(self, patient_metadata_start_filter_enabled=None, patient_metadata_end_filter_enabled=None, cohort_logic=None, cohort_display_logic=None, outcome_logic=None, intervention_logic=None, period_definitions=None, outcome_type=None, aggregation_type=None, aggregation_column=None, cohort_filters=None, outcome_aggregated_value=None, outcome_list_query=None, outcome_count_query=None, intervention_list_query=None, intervention_count_query=None, cohort_list_query=None, cohort_count_query=None, outcome_count=None, intervention_count=None, cohort_count=None, geographic_counts=None, geographic_queries=None, dataset_ids=None):  # noqa: E501
        """CohortWindow - a model defined in Swagger"""  # noqa: E501
        self._patient_metadata_start_filter_enabled = None
        self._patient_metadata_end_filter_enabled = None
        self._cohort_logic = None
        self._cohort_display_logic = None
        self._outcome_logic = None
        self._intervention_logic = None
        self._period_definitions = None
        self._outcome_type = None
        self._aggregation_type = None
        self._aggregation_column = None
        self._cohort_filters = None
        self._outcome_aggregated_value = None
        self._outcome_list_query = None
        self._outcome_count_query = None
        self._intervention_list_query = None
        self._intervention_count_query = None
        self._cohort_list_query = None
        self._cohort_count_query = None
        self._outcome_count = None
        self._intervention_count = None
        self._cohort_count = None
        self._geographic_counts = None
        self._geographic_queries = None
        self._dataset_ids = None
        self.discriminator = None
        if patient_metadata_start_filter_enabled is not None:
            self.patient_metadata_start_filter_enabled = patient_metadata_start_filter_enabled
        if patient_metadata_end_filter_enabled is not None:
            self.patient_metadata_end_filter_enabled = patient_metadata_end_filter_enabled
        if cohort_logic is not None:
            self.cohort_logic = cohort_logic
        if cohort_display_logic is not None:
            self.cohort_display_logic = cohort_display_logic
        if outcome_logic is not None:
            self.outcome_logic = outcome_logic
        if intervention_logic is not None:
            self.intervention_logic = intervention_logic
        if period_definitions is not None:
            self.period_definitions = period_definitions
        if outcome_type is not None:
            self.outcome_type = outcome_type
        if aggregation_type is not None:
            self.aggregation_type = aggregation_type
        if aggregation_column is not None:
            self.aggregation_column = aggregation_column
        if cohort_filters is not None:
            self.cohort_filters = cohort_filters
        if outcome_aggregated_value is not None:
            self.outcome_aggregated_value = outcome_aggregated_value
        if outcome_list_query is not None:
            self.outcome_list_query = outcome_list_query
        if outcome_count_query is not None:
            self.outcome_count_query = outcome_count_query
        if intervention_list_query is not None:
            self.intervention_list_query = intervention_list_query
        if intervention_count_query is not None:
            self.intervention_count_query = intervention_count_query
        if cohort_list_query is not None:
            self.cohort_list_query = cohort_list_query
        if cohort_count_query is not None:
            self.cohort_count_query = cohort_count_query
        if outcome_count is not None:
            self.outcome_count = outcome_count
        if intervention_count is not None:
            self.intervention_count = intervention_count
        if cohort_count is not None:
            self.cohort_count = cohort_count
        if geographic_counts is not None:
            self.geographic_counts = geographic_counts
        if geographic_queries is not None:
            self.geographic_queries = geographic_queries
        if dataset_ids is not None:
            self.dataset_ids = dataset_ids

    @property
    def patient_metadata_start_filter_enabled(self):
        """Gets the patient_metadata_start_filter_enabled of this CohortWindow.  # noqa: E501


        :return: The patient_metadata_start_filter_enabled of this CohortWindow.  # noqa: E501
        :rtype: bool
        """
        return self._patient_metadata_start_filter_enabled

    @patient_metadata_start_filter_enabled.setter
    def patient_metadata_start_filter_enabled(self, patient_metadata_start_filter_enabled):
        """Sets the patient_metadata_start_filter_enabled of this CohortWindow.


        :param patient_metadata_start_filter_enabled: The patient_metadata_start_filter_enabled of this CohortWindow.  # noqa: E501
        :type: bool
        """

        self._patient_metadata_start_filter_enabled = patient_metadata_start_filter_enabled

    @property
    def patient_metadata_end_filter_enabled(self):
        """Gets the patient_metadata_end_filter_enabled of this CohortWindow.  # noqa: E501


        :return: The patient_metadata_end_filter_enabled of this CohortWindow.  # noqa: E501
        :rtype: bool
        """
        return self._patient_metadata_end_filter_enabled

    @patient_metadata_end_filter_enabled.setter
    def patient_metadata_end_filter_enabled(self, patient_metadata_end_filter_enabled):
        """Sets the patient_metadata_end_filter_enabled of this CohortWindow.


        :param patient_metadata_end_filter_enabled: The patient_metadata_end_filter_enabled of this CohortWindow.  # noqa: E501
        :type: bool
        """

        self._patient_metadata_end_filter_enabled = patient_metadata_end_filter_enabled

    @property
    def cohort_logic(self):
        """Gets the cohort_logic of this CohortWindow.  # noqa: E501


        :return: The cohort_logic of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._cohort_logic

    @cohort_logic.setter
    def cohort_logic(self, cohort_logic):
        """Sets the cohort_logic of this CohortWindow.


        :param cohort_logic: The cohort_logic of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._cohort_logic = cohort_logic

    @property
    def cohort_display_logic(self):
        """Gets the cohort_display_logic of this CohortWindow.  # noqa: E501


        :return: The cohort_display_logic of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._cohort_display_logic

    @cohort_display_logic.setter
    def cohort_display_logic(self, cohort_display_logic):
        """Sets the cohort_display_logic of this CohortWindow.


        :param cohort_display_logic: The cohort_display_logic of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._cohort_display_logic = cohort_display_logic

    @property
    def outcome_logic(self):
        """Gets the outcome_logic of this CohortWindow.  # noqa: E501


        :return: The outcome_logic of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_logic

    @outcome_logic.setter
    def outcome_logic(self, outcome_logic):
        """Sets the outcome_logic of this CohortWindow.


        :param outcome_logic: The outcome_logic of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._outcome_logic = outcome_logic

    @property
    def intervention_logic(self):
        """Gets the intervention_logic of this CohortWindow.  # noqa: E501


        :return: The intervention_logic of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._intervention_logic

    @intervention_logic.setter
    def intervention_logic(self, intervention_logic):
        """Sets the intervention_logic of this CohortWindow.


        :param intervention_logic: The intervention_logic of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._intervention_logic = intervention_logic

    @property
    def period_definitions(self):
        """Gets the period_definitions of this CohortWindow.  # noqa: E501


        :return: The period_definitions of this CohortWindow.  # noqa: E501
        :rtype: list[PeriodDefinition]
        """
        return self._period_definitions

    @period_definitions.setter
    def period_definitions(self, period_definitions):
        """Sets the period_definitions of this CohortWindow.


        :param period_definitions: The period_definitions of this CohortWindow.  # noqa: E501
        :type: list[PeriodDefinition]
        """

        self._period_definitions = period_definitions

    @property
    def outcome_type(self):
        """Gets the outcome_type of this CohortWindow.  # noqa: E501


        :return: The outcome_type of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_type

    @outcome_type.setter
    def outcome_type(self, outcome_type):
        """Sets the outcome_type of this CohortWindow.


        :param outcome_type: The outcome_type of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._outcome_type = outcome_type

    @property
    def aggregation_type(self):
        """Gets the aggregation_type of this CohortWindow.  # noqa: E501


        :return: The aggregation_type of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._aggregation_type

    @aggregation_type.setter
    def aggregation_type(self, aggregation_type):
        """Sets the aggregation_type of this CohortWindow.


        :param aggregation_type: The aggregation_type of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._aggregation_type = aggregation_type

    @property
    def aggregation_column(self):
        """Gets the aggregation_column of this CohortWindow.  # noqa: E501


        :return: The aggregation_column of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._aggregation_column

    @aggregation_column.setter
    def aggregation_column(self, aggregation_column):
        """Sets the aggregation_column of this CohortWindow.


        :param aggregation_column: The aggregation_column of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._aggregation_column = aggregation_column

    @property
    def cohort_filters(self):
        """Gets the cohort_filters of this CohortWindow.  # noqa: E501


        :return: The cohort_filters of this CohortWindow.  # noqa: E501
        :rtype: list[CohortFilter]
        """
        return self._cohort_filters

    @cohort_filters.setter
    def cohort_filters(self, cohort_filters):
        """Sets the cohort_filters of this CohortWindow.


        :param cohort_filters: The cohort_filters of this CohortWindow.  # noqa: E501
        :type: list[CohortFilter]
        """

        self._cohort_filters = cohort_filters

    @property
    def outcome_aggregated_value(self):
        """Gets the outcome_aggregated_value of this CohortWindow.  # noqa: E501


        :return: The outcome_aggregated_value of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._outcome_aggregated_value

    @outcome_aggregated_value.setter
    def outcome_aggregated_value(self, outcome_aggregated_value):
        """Sets the outcome_aggregated_value of this CohortWindow.


        :param outcome_aggregated_value: The outcome_aggregated_value of this CohortWindow.  # noqa: E501
        :type: float
        """

        self._outcome_aggregated_value = outcome_aggregated_value

    @property
    def outcome_list_query(self):
        """Gets the outcome_list_query of this CohortWindow.  # noqa: E501


        :return: The outcome_list_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_list_query

    @outcome_list_query.setter
    def outcome_list_query(self, outcome_list_query):
        """Sets the outcome_list_query of this CohortWindow.


        :param outcome_list_query: The outcome_list_query of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._outcome_list_query = outcome_list_query

    @property
    def outcome_count_query(self):
        """Gets the outcome_count_query of this CohortWindow.  # noqa: E501


        :return: The outcome_count_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_count_query

    @outcome_count_query.setter
    def outcome_count_query(self, outcome_count_query):
        """Sets the outcome_count_query of this CohortWindow.


        :param outcome_count_query: The outcome_count_query of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._outcome_count_query = outcome_count_query

    @property
    def intervention_list_query(self):
        """Gets the intervention_list_query of this CohortWindow.  # noqa: E501


        :return: The intervention_list_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._intervention_list_query

    @intervention_list_query.setter
    def intervention_list_query(self, intervention_list_query):
        """Sets the intervention_list_query of this CohortWindow.


        :param intervention_list_query: The intervention_list_query of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._intervention_list_query = intervention_list_query

    @property
    def intervention_count_query(self):
        """Gets the intervention_count_query of this CohortWindow.  # noqa: E501


        :return: The intervention_count_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._intervention_count_query

    @intervention_count_query.setter
    def intervention_count_query(self, intervention_count_query):
        """Sets the intervention_count_query of this CohortWindow.


        :param intervention_count_query: The intervention_count_query of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._intervention_count_query = intervention_count_query

    @property
    def cohort_list_query(self):
        """Gets the cohort_list_query of this CohortWindow.  # noqa: E501


        :return: The cohort_list_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._cohort_list_query

    @cohort_list_query.setter
    def cohort_list_query(self, cohort_list_query):
        """Sets the cohort_list_query of this CohortWindow.


        :param cohort_list_query: The cohort_list_query of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._cohort_list_query = cohort_list_query

    @property
    def cohort_count_query(self):
        """Gets the cohort_count_query of this CohortWindow.  # noqa: E501


        :return: The cohort_count_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._cohort_count_query

    @cohort_count_query.setter
    def cohort_count_query(self, cohort_count_query):
        """Sets the cohort_count_query of this CohortWindow.


        :param cohort_count_query: The cohort_count_query of this CohortWindow.  # noqa: E501
        :type: str
        """

        self._cohort_count_query = cohort_count_query

    @property
    def outcome_count(self):
        """Gets the outcome_count of this CohortWindow.  # noqa: E501


        :return: The outcome_count of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._outcome_count

    @outcome_count.setter
    def outcome_count(self, outcome_count):
        """Sets the outcome_count of this CohortWindow.


        :param outcome_count: The outcome_count of this CohortWindow.  # noqa: E501
        :type: float
        """

        self._outcome_count = outcome_count

    @property
    def intervention_count(self):
        """Gets the intervention_count of this CohortWindow.  # noqa: E501


        :return: The intervention_count of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._intervention_count

    @intervention_count.setter
    def intervention_count(self, intervention_count):
        """Sets the intervention_count of this CohortWindow.


        :param intervention_count: The intervention_count of this CohortWindow.  # noqa: E501
        :type: float
        """

        self._intervention_count = intervention_count

    @property
    def cohort_count(self):
        """Gets the cohort_count of this CohortWindow.  # noqa: E501


        :return: The cohort_count of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._cohort_count

    @cohort_count.setter
    def cohort_count(self, cohort_count):
        """Sets the cohort_count of this CohortWindow.


        :param cohort_count: The cohort_count of this CohortWindow.  # noqa: E501
        :type: float
        """

        self._cohort_count = cohort_count

    @property
    def geographic_counts(self):
        """Gets the geographic_counts of this CohortWindow.  # noqa: E501


        :return: The geographic_counts of this CohortWindow.  # noqa: E501
        :rtype: GeographicCounts
        """
        return self._geographic_counts

    @geographic_counts.setter
    def geographic_counts(self, geographic_counts):
        """Sets the geographic_counts of this CohortWindow.


        :param geographic_counts: The geographic_counts of this CohortWindow.  # noqa: E501
        :type: GeographicCounts
        """

        self._geographic_counts = geographic_counts

    @property
    def geographic_queries(self):
        """Gets the geographic_queries of this CohortWindow.  # noqa: E501


        :return: The geographic_queries of this CohortWindow.  # noqa: E501
        :rtype: GeographicQueries
        """
        return self._geographic_queries

    @geographic_queries.setter
    def geographic_queries(self, geographic_queries):
        """Sets the geographic_queries of this CohortWindow.


        :param geographic_queries: The geographic_queries of this CohortWindow.  # noqa: E501
        :type: GeographicQueries
        """

        self._geographic_queries = geographic_queries

    @property
    def dataset_ids(self):
        """Gets the dataset_ids of this CohortWindow.  # noqa: E501


        :return: The dataset_ids of this CohortWindow.  # noqa: E501
        :rtype: list[str]
        """
        return self._dataset_ids

    @dataset_ids.setter
    def dataset_ids(self, dataset_ids):
        """Sets the dataset_ids of this CohortWindow.


        :param dataset_ids: The dataset_ids of this CohortWindow.  # noqa: E501
        :type: list[str]
        """

        self._dataset_ids = dataset_ids

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(CohortWindow, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, CohortWindow):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
