from chembl_webresource_client.new_client import new_client

def search_protein(query):
    target = new_client.target
    results = []
    target_protein_words = set()
    query = query.upper()

    if query.startswith("CHEMBL"):
        res = target.filter(target_chembl_id=query).all()
    else:
        res = target.search(query)
        target_protein_words = set(query.lower().split())

    if not res:
        return []

    for r in res:
        pref_name = r.get('pref_name', '').lower()
        if query.startswith("CHEMBL") or (pref_name and target_protein_words & set(pref_name.split())):
            results.append({
                'id': r['target_chembl_id'],
                'name': r.get('pref_name', '').title(),
                'target_type': r.get('target_type', ''),
                'organism': (r.get('organism') or '').title()
            })
    return results
