Skip to content

Commit a887c47

Browse files
authored
Merge branch 'main' into develop
2 parents b5a0c0f + 1c9ccfe commit a887c47

1 file changed

Lines changed: 17 additions & 13 deletions

File tree

examples/search_concepts.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ def basic_search() -> None:
1616
"""Demonstrate basic concept search."""
1717
print("=== Basic Search ===")
1818

19-
# Simple text search - returns a flat list of concept dicts
20-
concepts = client.search.basic("heart attack")
19+
# ``search.basic`` returns a dict with a ``concepts`` list plus pagination
20+
# metadata - read the list from ``result["concepts"]``.
21+
result = client.search.basic("heart attack")
22+
concepts = result["concepts"]
2123
print(f"Found {len(concepts)} concepts for 'heart attack'")
2224

2325
for c in concepts[:3]:
@@ -28,14 +30,15 @@ def filtered_search() -> None:
2830
"""Demonstrate search with filters."""
2931
print("\n=== Filtered Search ===")
3032

31-
# Search in specific vocabularies
32-
concepts = client.search.basic(
33+
# Search in specific vocabularies. Same dict-shaped response as above.
34+
result = client.search.basic(
3335
"myocardial infarction",
3436
vocabulary_ids=["SNOMED", "ICD10CM"],
3537
domain_ids=["Condition"],
3638
standard_concept="S", # Only standard concepts
3739
page_size=10,
3840
)
41+
concepts = result["concepts"]
3942
print(f"Found {len(concepts)} standard condition concepts")
4043

4144
for c in concepts[:5]:
@@ -45,14 +48,15 @@ def filtered_search() -> None:
4548
def bulk_lexical_search() -> None:
4649
"""Demonstrate bulk lexical search — multiple queries in one call.
4750
48-
``bulk_basic`` returns a list of per-query result objects. Each item
49-
has ``search_id``, ``query``, ``results`` (a nested list), ``status``,
50-
and ``duration``.
51+
``bulk_basic`` returns a dict with a ``results`` list (plus
52+
``total_searches`` / ``completed_searches`` / ``failed_searches``
53+
counts). Each item in ``results`` has ``search_id``, ``query``,
54+
``results`` (a nested list of concepts), ``status``, and ``duration``.
5155
"""
5256
print("\n=== Bulk Lexical Search ===")
5357

5458
# Search for multiple terms at once (up to 50)
55-
items = client.search.bulk_basic(
59+
response = client.search.bulk_basic(
5660
[
5761
{"search_id": "q1", "query": "diabetes mellitus"},
5862
{"search_id": "q2", "query": "hypertension"},
@@ -61,13 +65,13 @@ def bulk_lexical_search() -> None:
6165
defaults={"vocabulary_ids": ["SNOMED"], "page_size": 5},
6266
)
6367

64-
for item in items:
68+
for item in response["results"]:
6569
print(
6670
f" {item['search_id']}: {len(item['results'])} results ({item['status']})"
6771
)
6872

6973
# Per-query overrides — different domains per query
70-
items = client.search.bulk_basic(
74+
response = client.search.bulk_basic(
7175
[
7276
{
7377
"search_id": "conditions",
@@ -80,7 +84,7 @@ def bulk_lexical_search() -> None:
8084
)
8185

8286
print("\n Per-query domain overrides:")
83-
for item in items:
87+
for item in response["results"]:
8488
print(f" {item['search_id']}:")
8589
for c in item["results"][:3]:
8690
print(f" {c['concept_name']} ({c['vocabulary_id']}/{c['domain_id']})")
@@ -124,8 +128,8 @@ def bulk_semantic_search() -> None:
124128
def autocomplete_example() -> None:
125129
"""Demonstrate autocomplete suggestions.
126130
127-
``concepts.suggest`` returns a flat list of concept dicts - the same
128-
shape as ``search.basic`` - so you read ``concept_name`` directly.
131+
``concepts.suggest`` returns its own response shape (distinct from
132+
``search.basic``); read suggestion fields off each item directly.
129133
"""
130134
print("\n=== Autocomplete ===")
131135

0 commit comments

Comments
 (0)