@@ -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:
4548def 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:
124128def 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