def extract_mesh_headings(elem):
    """Extract mesh headings that describe the pubmed articles for example animals, plants, etc. 

    Args:
        elem (xml): xml element

    Returns:
        tuple: containing a list of mesh headings
    """
    mesh_heading_list = {"MeshHeadingList": {}}

    for index, mesh_heading in enumerate(list(elem)):
        if (len(list(mesh_heading)) == 0):
            continue

        current_qualifiers = []
        qualifier_list = mesh_heading.findall("QualifierName")
        current_mesh_heading = "MeshHeading {}".format(index)

        mesh_heading_list["MeshHeadingList"].update(
            {
                current_mesh_heading:
                {"DescriptorName": mesh_heading.find("DescriptorName").text}
            })

        if (len(qualifier_list) != 0 and qualifier_list[0] != None):
            for qualifier in qualifier_list:
                current_qualifiers.append(qualifier.text or "")
            mesh_heading_list["MeshHeadingList"][current_mesh_heading]["QualifierNames"] = \
                ", ".join(current_qualifiers)

    return (mesh_heading_list, False)