def hgnc(self, name=None, symbol=None, identifier=None, status=None, uuid=None, locus_group=None, orphanet=None,
             locus_type=None, date_name_changed=None, date_modified=None, date_symbol_changed=None, pubmedid=None,
             date_approved_reserved=None, ensembl_gene=None, horde=None, vega=None, lncrnadb=None, uniprotid=None,
             entrez=None, mirbase=None, iuphar=None, ucsc=None, snornabase=None, gene_family_name=None, mgdid=None,
             pseudogeneorg=None, bioparadigmsslc=None, locationsortable=None, ec_number=None, refseq_accession=None,
             merops=None, location=None, cosmic=None, imgt=None, enaid=None, alias_symbol=None, alias_name=None,
             rgdid=None, omimid=None, ccdsid=None, lsdbs=None, ortholog_species=None, gene_family_identifier=None,
             limit=None, as_df=False):
        """Method to query :class:`pyhgnc.manager.models.Pmid`


        :param name: HGNC approved name for the gene
        :type name: str or tuple(str) or None

        :param symbol: HGNC approved gene symbol
        :type symbol: str or tuple(str) or None

        :param identifier: HGNC ID. A unique ID created by the HGNC for every approved symbol
        :type identifier: int or tuple(int) or None

        :param status: Status of the symbol report, which can be either "Approved" or "Entry Withdrawn"
        :type status: str or tuple(str) or None

        :param uuid: universally unique identifier
        :type uuid: str or tuple(str) or None

        :param locus_group: group name for a set of related locus types as defined by the HGNC
        :type locus_group: str or tuple(str) or None

        :param orphanet: Orphanet database identifier (related to rare diseases and orphan drugs)
        :type orphanet: int ot tuple(int) or None

        :param locus_type: locus type as defined by the HGNC (e.g. RNA, transfer)
        :type locus_type: str or tuple(str) or None

        :param date_name_changed: date the gene name was last changed (format: YYYY-mm-dd, e.g. 2017-09-29)
        :type date_name_changed: str or tuple(str) or None

        :param date_modified: date the entry was last modified (format: YYYY-mm-dd, e.g. 2017-09-29)
        :type date_modified: str or tuple(str) or None

        :param date_symbol_changed: date the gene symbol was last changed (format: YYYY-mm-dd, e.g. 2017-09-29)
        :type date_symbol_changed: str or tuple(str) or None

        :param date_approved_reserved: date the entry was first approved (format: YYYY-mm-dd, e.g. 2017-09-29)
        :type date_approved_reserved: str or tuple(str) or None

        :param pubmedid: PubMed identifier
        :type pubmedid: int ot tuple(int) or None

        :param ensembl_gene: Ensembl gene ID. Found within the "GENE RESOURCES" section of the gene symbol report
        :type ensembl_gene: str or tuple(str) or None

        :param horde: symbol used within HORDE for the gene (not available in JSON)
        :type horde: str or tuple(str) or None

        :param vega: Vega gene ID. Found within the "GENE RESOURCES" section of the gene symbol report
        :type vega: str or tuple(str) or None

        :param lncrnadb: Noncoding RNA Database identifier
        :type lncrnadb: str or tuple(str) or None

        :param uniprotid: UniProt identifier
        :type uniprotid: str or tuple(str) or None

        :param entrez: Entrez gene ID. Found within the "GENE RESOURCES" section of the gene symbol report
        :type entrez: str or tuple(str) or None

        :param mirbase: miRBase ID
        :type mirbase: str or tuple(str) or None

        :param iuphar: The objectId used to link to the IUPHAR/BPS Guide to PHARMACOLOGY database
        :type iuphar: str or tuple(str) or None

        :param ucsc: UCSC gene ID. Found within the "GENE RESOURCES" section of the gene symbol report
        :type ucsc: str or tuple(str) or None

        :param snornabase: snoRNABase ID
        :type snornabase: str or tuple(str) or None

        :param gene_family_name: Gene family name
        :type gene_family_name: str or tuple(str) or None

        :param gene_family_identifier: Gene family identifier
        :type gene_family_name: int or tuple(int) or None

        :param mgdid: Mouse Genome Database identifier
        :type mgdid: int ot tuple(int) or None

        :param imgt: Symbol used within international ImMunoGeneTics information system
        :type imgt: str or tuple(str) or None

        :param enaid: European Nucleotide Archive (ENA) identifier
        :type enaid: str or tuple(str) or None

        :param alias_symbol: Other symbols used to refer to a gene
        :type alias_symbol: str or tuple(str) or None

        :param alias_name: Other names used to refer to a gene
        :type alias_name: str or tuple(str) or None

        :param pseudogeneorg: Pseudogene.org ID
        :type pseudogeneorg: str or tuple(str) or None

        :param bioparadigmsslc: Symbol used to link to the SLC tables database at bioparadigms.org for the gene
        :type bioparadigmsslc: str or tuple(str) or None

        :param locationsortable: locations sortable
        :type locationsortable: str or tuple(str) or None

        :param ec_number: Enzyme Commission number (EC number)
        :type ec_number: str or tuple(str) or None

        :param refseq_accession: RefSeq nucleotide accession(s)
        :type refseq_accession: str or tuple(str) or None

        :param merops: ID used to link to the MEROPS peptidase database
        :type merops: str or tuple(str) or None

        :param location: Cytogenetic location of the gene (e.g. 2q34).
        :type location: str or tuple(str) or None

        :param cosmic: Symbol used within the Catalogue of somatic mutations in cancer for the gene
        :type cosmic: str or tuple(str) or None

        :param rgdid: Rat genome database gene ID
        :type rgdid: int or tuple(int) or None

        :param omimid: Online Mendelian Inheritance in Man (OMIM) ID
        :type omimid: int or tuple(int) or None

        :param ccdsid: Consensus CDS ID
        :type ccdsid: str or tuple(str) or None

        :param lsdbs: Locus Specific Mutation Database Name
        :type lsdbs: str or tuple(str) or None

        :param ortholog_species: Ortholog species NCBI taxonomy identifier
        :type ortholog_species: int or tuple(int) or None

        :param limit:
            - if `isinstance(limit,int)==True` -> limit
            - if `isinstance(limit,tuple)==True` -> format:= tuple(page_number, results_per_page)
            - if limit == None -> all results
        :type limit: int or tuple(int) or None

        :param bool as_df: if `True` results are returned as :class:`pandas.DataFrame`

        :return:
            - if `as_df == False` -> list(:class:`.models.Keyword`)
            - if `as_df == True`  -> :class:`pandas.DataFrame`
        :rtype: list[models.HGNC]
        """
        q = self.session.query(models.HGNC)

        model_queries_config = (
            (orphanet, models.HGNC.orphanet),
            (name, models.HGNC.name),
            (symbol, models.HGNC.symbol),
            (identifier, models.HGNC.identifier),
            (status, models.HGNC.status),
            (uuid, models.HGNC.uuid),
            (locus_group, models.HGNC.locus_group),
            (locus_type, models.HGNC.locus_type),
            (date_name_changed, models.HGNC.date_name_changed),
            (date_modified, models.HGNC.date_modified),
            (date_symbol_changed, models.HGNC.date_symbol_changed),
            (date_approved_reserved, models.HGNC.date_approved_reserved),
            (ensembl_gene, models.HGNC.ensembl_gene),
            (horde, models.HGNC.horde),
            (vega, models.HGNC.vega),
            (lncrnadb, models.HGNC.lncrnadb),
            (entrez, models.HGNC.entrez),
            (mirbase, models.HGNC.mirbase),
            (iuphar, models.HGNC.iuphar),
            (ucsc, models.HGNC.ucsc),
            (snornabase, models.HGNC.snornabase),
            (pseudogeneorg, models.HGNC.pseudogeneorg),
            (bioparadigmsslc, models.HGNC.bioparadigmsslc),
            (locationsortable, models.HGNC.locationsortable),
            (merops, models.HGNC.merops),
            (location, models.HGNC.location),
            (cosmic, models.HGNC.cosmic),
            (imgt, models.HGNC.imgt),
        )
        q = self.get_model_queries(q, model_queries_config)

        many_to_many_queries_config = (
            (ec_number, models.HGNC.enzymes, models.Enzyme.ec_number),
            (gene_family_name, models.HGNC.gene_families, models.GeneFamily.family_name),
            (gene_family_identifier, models.HGNC.gene_families, models.GeneFamily.family_identifier),
            (refseq_accession, models.HGNC.refseqs, models.RefSeq.accession),
            (mgdid, models.HGNC.mgds, models.MGD.mgdid),
            (uniprotid, models.HGNC.uniprots, models.UniProt.uniprotid),
            (pubmedid, models.HGNC.pubmeds, models.PubMed.pubmedid),
            (enaid, models.HGNC.enas, models.ENA.enaid),
        )
        q = self.get_many_to_many_queries(q, many_to_many_queries_config)

        one_to_many_queries_config = (
            (alias_symbol, models.AliasSymbol.alias_symbol),
            (alias_name, models.AliasName.alias_name),
            (rgdid, models.RGD.rgdid),
            (omimid, models.OMIM.omimid),
            (ccdsid, models.CCDS.ccdsid),
            (lsdbs, models.LSDB.lsdb),
            (ortholog_species, models.OrthologyPrediction.ortholog_species),
        )
        q = self.get_one_to_many_queries(q, one_to_many_queries_config)

        return self._limit_and_df(q, limit, as_df)