def get_disease(self, disease_name=None, disease_id=None, definition=None, parent_ids=None, tree_numbers=None,
                    parent_tree_numbers=None, slim_mapping=None, synonym=None, alt_disease_id=None, limit=None,
                    as_df=False):
        """
        Get diseases

        :param bool as_df: if set to True result returns as `pandas.DataFrame`
        :param int limit: maximum number of results
        :param str disease_name: disease name
        :param str disease_id: disease identifier
        :param str definition: definition of disease
        :param str parent_ids: parent identifiers, delimiter |
        :param str tree_numbers: tree numbers, delimiter |
        :param str parent_tree_numbers: parent tree numbers, delimiter
        :param str slim_mapping:  term derived from the MeSH tree structure for the “Diseases” [C] branch, \
        that classifies MEDIC diseases into high-level categories
        :param str synonym: disease synonyms
        :param str alt_disease_id: alternative disease identifiers
        :return: list of :class:`pyctd.manager.models.Disease` object


        .. seealso::

            :class:`pyctd.manager.models.Disease`

        .. todo::
            normalize parent_ids, tree_numbers and parent_tree_numbers in :class:`pyctd.manager.models.Disease`
        """
        q = self.session.query(models.Disease)

        if disease_name:
            q = q.filter(models.Disease.disease_name.like(disease_name))

        if disease_id:
            q = q.filter(models.Disease.disease_id == disease_id)

        if definition:
            q = q.filter(models.Disease.definition.like(definition))

        if parent_ids:
            q = q.filter(models.Disease.parent_ids.like(parent_ids))

        if tree_numbers:
            q = q.filter(models.Disease.tree_numbers.like(tree_numbers))

        if parent_tree_numbers:
            q = q.filter(models.Disease.parent_tree_numbers.like(parent_tree_numbers))

        if slim_mapping:
            q = q.join(models.DiseaseSlimmapping).filter(models.DiseaseSlimmapping.slim_mapping.like(slim_mapping))

        if synonym:
            q = q.join(models.DiseaseSynonym).filter(models.DiseaseSynonym.synonym.like(synonym))

        if alt_disease_id:
            q = q.join(models.DiseaseAltdiseaseid).filter(models.DiseaseAltdiseaseid.alt_disease_id == alt_disease_id)

        return self._limit_and_df(q, limit, as_df)
Get diseases

        :param bool as_df: if set to True result returns as `pandas.DataFrame`
        :param int limit: maximum number of results
        :param str disease_name: disease name
        :param str disease_id: disease identifier
        :param str definition: definition of disease
        :param str parent_ids: parent identifiers, delimiter |
        :param str tree_numbers: tree numbers, delimiter |
        :param str parent_tree_numbers: parent tree numbers, delimiter
        :param str slim_mapping:  term derived from the MeSH tree structure for the “Diseases” [C] branch, \
        that classifies MEDIC diseases into high-level categories
        :param str synonym: disease synonyms
        :param str alt_disease_id: alternative disease identifiers
        :return: list of :class:`pyctd.manager.models.Disease` object


        .. seealso::

            :class:`pyctd.manager.models.Disease`

        .. todo::
            normalize parent_ids, tree_numbers and parent_tree_numbers in :class:`pyctd.manager.models.Disease`