def all_drugs_where(sort=True,
                    include_categories: bool = False,
                    **criteria: Dict[str, bool]) -> List[Drug]:
    """
    Find all drugs matching the specified criteria (see
    :func:`drug_matches_criteria`). If ``include_categories`` is true, then
    drug categories (like "tricyclics") are included as well as individual
    drugs.

    Pass keyword arguments such as

    .. code-block:: python

        from cardinal_pythonlib.psychiatry.drugs import *
        non_ssri_antidep = all_drugs_where(antidepressant=True, ssri=False)
        print([d.generic_name for d in non_ssri_antidep])
        conventional_antidep = all_drugs_where(conventional_antidepressant=True)
        print([d.generic_name for d in conventional_antidep])
    """
    matching_drugs = []  # type: List[Drug]
    for drug in DRUGS:
        if drug.category_not_drug and not include_categories:
            continue
        if drug_matches_criteria(drug, **criteria):
            matching_drugs.append(drug)
    if sort:
        matching_drugs.sort(key=lambda d: d.generic_name)
    return matching_drugs
Find all drugs matching the specified criteria (see
    :func:`drug_matches_criteria`). If ``include_categories`` is true, then
    drug categories (like "tricyclics") are included as well as individual
    drugs.

    Pass keyword arguments such as

    .. code-block:: python

        from cardinal_pythonlib.psychiatry.drugs import *
        non_ssri_antidep = all_drugs_where(antidepressant=True, ssri=False)
        print([d.generic_name for d in non_ssri_antidep])
        conventional_antidep = all_drugs_where(conventional_antidepressant=True)
        print([d.generic_name for d in conventional_antidep])