@@ -1802,6 +1802,7 @@ def _get_bulkdata(
18021802 media_types : Optional [Tuple [Union [str , Tuple [str , str ]], ...]] = None ,
18031803 byte_range : Optional [Tuple [int , int ]] = None ,
18041804 stream : bool = False ,
1805+ additional_params : Optional [Dict [str , Any ]] = None
18051806 ) -> Iterator [bytes ]:
18061807 """Get bulk data items at a given location.
18071808
@@ -1817,6 +1818,8 @@ def _get_bulkdata(
18171818 stream: bool, optional
18181819 Whether data should be streamed (i.e., requested using chunked
18191820 transfer encoding)
1821+ additional_params: Union[Dict[str, Any], None], optional
1822+ Additional HTTP GET query parameters
18201823
18211824 Returns
18221825 -------
@@ -1826,26 +1829,45 @@ def _get_bulkdata(
18261829 """ # noqa: E501
18271830 if media_types is None :
18281831 return self ._http_get_multipart (
1829- url , media_types , byte_range = byte_range , stream = stream
1832+ url ,
1833+ media_types ,
1834+ byte_range = byte_range ,
1835+ params = additional_params ,
1836+ stream = stream ,
18301837 )
18311838 common_media_types = self ._get_common_media_types (media_types )
18321839 if len (common_media_types ) > 1 :
18331840 return self ._http_get_multipart (
1834- url , media_types , byte_range = byte_range , stream = stream
1841+ url , media_types ,
1842+ byte_range = byte_range ,
1843+ params = additional_params ,
1844+ stream = stream ,
18351845 )
18361846 else :
18371847 common_media_type = common_media_types [0 ]
18381848 if common_media_type == 'application/octet-stream' :
18391849 return self ._http_get_multipart_application_octet_stream (
1840- url , media_types , byte_range = byte_range , stream = stream
1850+ url ,
1851+ media_types ,
1852+ byte_range = byte_range ,
1853+ params = additional_params ,
1854+ stream = stream
18411855 )
18421856 elif common_media_type .startswith ('image' ):
18431857 return self ._http_get_multipart_image (
1844- url , media_types , byte_range = byte_range , stream = stream
1858+ url ,
1859+ media_types ,
1860+ byte_range = byte_range ,
1861+ params = additional_params ,
1862+ stream = stream
18451863 )
18461864 elif common_media_type .startswith ('video' ):
18471865 return self ._http_get_multipart_video (
1848- url , media_types , byte_range = byte_range , stream = stream
1866+ url ,
1867+ media_types ,
1868+ byte_range = byte_range ,
1869+ params = additional_params ,
1870+ stream = stream
18491871 )
18501872 else :
18511873 raise ValueError (
@@ -1857,7 +1879,8 @@ def retrieve_bulkdata(
18571879 self ,
18581880 url : str ,
18591881 media_types : Optional [Tuple [Union [str , Tuple [str , str ]], ...]] = None ,
1860- byte_range : Optional [Tuple [int , int ]] = None
1882+ byte_range : Optional [Tuple [int , int ]] = None ,
1883+ additional_params : Optional [Dict [str , Any ]] = None ,
18611884 ) -> List [bytes ]:
18621885 """Retrieve bulk data at a given location.
18631886
@@ -1870,6 +1893,8 @@ def retrieve_bulkdata(
18701893 corresponding transfer syntaxes
18711894 byte_range: Union[Tuple[int, int], None], optional
18721895 Start and end of byte range
1896+ additional_params: Union[Dict[str, Any], None], optional
1897+ Additional HTTP GET query parameters
18731898
18741899 Returns
18751900 -------
@@ -1882,15 +1907,17 @@ def retrieve_bulkdata(
18821907 url = url ,
18831908 media_types = media_types ,
18841909 byte_range = byte_range ,
1885- stream = False
1910+ stream = False ,
1911+ additional_params = additional_params ,
18861912 )
18871913 )
18881914
18891915 def iter_bulkdata (
18901916 self ,
18911917 url : str ,
18921918 media_types : Optional [Tuple [Union [str , Tuple [str , str ]], ...]] = None ,
1893- byte_range : Optional [Tuple [int , int ]] = None
1919+ byte_range : Optional [Tuple [int , int ]] = None ,
1920+ additional_params : Optional [Dict [str , Any ]] = None ,
18941921 ) -> Iterator [bytes ]:
18951922 """Iterate over bulk data items at a given location.
18961923
@@ -1903,6 +1930,8 @@ def iter_bulkdata(
19031930 corresponding transfer syntaxes
19041931 byte_range: Union[Tuple[int, int], None], optional
19051932 Start and end of byte range
1933+ additional_params: Union[Dict[str, Any], None], optional
1934+ Additional HTTP GET query parameters
19061935
19071936 Returns
19081937 -------
@@ -1918,15 +1947,16 @@ def iter_bulkdata(
19181947 url = url ,
19191948 media_types = media_types ,
19201949 byte_range = byte_range ,
1921- stream = True
1950+ stream = True ,
1951+ additional_params = additional_params ,
19221952 )
19231953
19241954 def _get_study (
19251955 self ,
19261956 study_instance_uid : str ,
19271957 media_types : Optional [Tuple [Union [str , Tuple [str , str ]], ...]] = None ,
19281958 stream : bool = False ,
1929- params : Optional [Dict [str , Any ]] = None
1959+ additional_params : Optional [Dict [str , Any ]] = None
19301960 ) -> Iterator [pydicom .dataset .Dataset ]:
19311961 """Get all instances of a study.
19321962
@@ -1940,7 +1970,7 @@ def _get_study(
19401970 stream: bool, optional
19411971 Whether data should be streamed (i.e., requested using chunked
19421972 transfer encoding)
1943- params : Union[Dict[str, Any], None], optional
1973+ additional_params : Union[Dict[str, Any], None], optional
19441974 Additional HTTP GET query parameters
19451975
19461976 Returns
@@ -1957,7 +1987,7 @@ def _get_study(
19571987 if media_types is None :
19581988 return self ._http_get_multipart_application_dicom (
19591989 url ,
1960- params = params ,
1990+ params = additional_params ,
19611991 stream = stream
19621992 )
19631993 common_media_types = self ._get_common_media_types (media_types )
@@ -1975,7 +2005,7 @@ def _get_study(
19752005 return self ._http_get_multipart_application_dicom (
19762006 url ,
19772007 media_types = media_types ,
1978- params = params ,
2008+ params = additional_params ,
19792009 stream = stream
19802010 )
19812011
@@ -2061,14 +2091,17 @@ def iter_study(
20612091
20622092 def retrieve_study_metadata (
20632093 self ,
2064- study_instance_uid : str
2094+ study_instance_uid : str ,
2095+ additional_params : Optional [Dict [str , Any ]] = None
20652096 ) -> List [Dict [str , dict ]]:
20662097 """Retrieve metadata of all instances of a study.
20672098
20682099 Parameters
20692100 ----------
20702101 study_instance_uid: str
20712102 Study Instance UID
2103+ additional_params: Union[Dict[str, Any], None], optional
2104+ Additional HTTP GET query parameters
20722105
20732106 Returns
20742107 -------
@@ -2083,7 +2116,7 @@ def retrieve_study_metadata(
20832116 )
20842117 url = self ._get_studies_url (_Transaction .RETRIEVE , study_instance_uid )
20852118 url += '/metadata'
2086- return self ._http_get_application_json (url )
2119+ return self ._http_get_application_json (url , params = additional_params )
20872120
20882121 def delete_study (self , study_instance_uid : str ) -> None :
20892122 """Delete all instances of a study.
@@ -2211,7 +2244,7 @@ def _get_series(
22112244 series_instance_uid : str ,
22122245 media_types : Optional [Tuple [Union [str , Tuple [str , str ]], ...]] = None ,
22132246 stream : bool = False ,
2214- params : Optional [Dict [str , Any ]] = None
2247+ additional_params : Optional [Dict [str , Any ]] = None
22152248 ) -> Iterator [pydicom .dataset .Dataset ]:
22162249 """Get instances of a series.
22172250
@@ -2227,7 +2260,7 @@ def _get_series(
22272260 stream: bool, optional
22282261 Whether data should be streamed (i.e., requested using chunked
22292262 transfer encoding)
2230- params : Union[Dict[str, Any], None], optional
2263+ additional_params : Union[Dict[str, Any], None], optional
22312264 Additional HTTP GET query parameters
22322265
22332266 Returns
@@ -2258,7 +2291,7 @@ def _get_series(
22582291 if media_types is None :
22592292 return self ._http_get_multipart_application_dicom (
22602293 url ,
2261- params = params ,
2294+ params = additional_params ,
22622295 stream = stream
22632296 )
22642297 common_media_types = self ._get_common_media_types (media_types )
@@ -2276,7 +2309,7 @@ def _get_series(
22762309 return self ._http_get_multipart_application_dicom (
22772310 url ,
22782311 media_types = media_types ,
2279- params = params ,
2312+ params = additional_params ,
22802313 stream = stream
22812314 )
22822315
@@ -2372,6 +2405,7 @@ def retrieve_series_metadata(
23722405 self ,
23732406 study_instance_uid : str ,
23742407 series_instance_uid : str ,
2408+ additional_params : Optional [Dict [str , Any ]] = None
23752409 ) -> List [Dict [str , dict ]]:
23762410 """Retrieve metadata for all instances of a series.
23772411
@@ -2381,6 +2415,8 @@ def retrieve_series_metadata(
23812415 Study Instance UID
23822416 series_instance_uid: str
23832417 Series Instance UID
2418+ additional_params: Union[Dict[str, Any], None], optional
2419+ Additional HTTP GET query parameters
23842420
23852421 Returns
23862422 -------
@@ -2410,7 +2446,7 @@ def retrieve_series_metadata(
24102446 series_instance_uid
24112447 )
24122448 url += '/metadata'
2413- return self ._http_get_application_json (url )
2449+ return self ._http_get_application_json (url , params = additional_params )
24142450
24152451 def retrieve_series_rendered (
24162452 self , study_instance_uid ,
@@ -2602,6 +2638,8 @@ def search_for_instances(
26022638 fields = fields ,
26032639 search_filters = search_filters
26042640 )
2641+ if additional_params :
2642+ params .update (additional_params )
26052643 return self ._http_get_application_json (
26062644 url ,
26072645 params = params ,
@@ -2614,7 +2652,7 @@ def retrieve_instance(
26142652 series_instance_uid : str ,
26152653 sop_instance_uid : str ,
26162654 media_types : Optional [Tuple [Union [str , Tuple [str , str ]], ...]] = None ,
2617- params : Optional [Dict [str , Any ]] = None
2655+ additional_params : Optional [Dict [str , Any ]] = None
26182656 ) -> pydicom .dataset .Dataset :
26192657 """Retrieve an individual instance.
26202658
@@ -2629,7 +2667,7 @@ def retrieve_instance(
26292667 media_types: Union[Tuple[Union[str, Tuple[str, str]], ...], None], optional
26302668 Acceptable media types and optionally the UIDs of the
26312669 acceptable transfer syntaxes
2632- params : Union[Dict[str, Any], None], optional
2670+ additional_params : Union[Dict[str, Any], None], optional
26332671 Additional HTTP GET query parameters
26342672
26352673 Returns
@@ -2692,7 +2730,7 @@ def retrieve_instance(
26922730 iterator = self ._http_get_multipart_application_dicom (
26932731 url ,
26942732 media_types = media_types ,
2695- params = params
2733+ params = additional_params
26962734 )
26972735 instances = list (iterator )
26982736 if len (instances ) > 1 :
@@ -2789,7 +2827,8 @@ def retrieve_instance_metadata(
27892827 self ,
27902828 study_instance_uid : str ,
27912829 series_instance_uid : str ,
2792- sop_instance_uid : str
2830+ sop_instance_uid : str ,
2831+ additional_params : Optional [Dict [str , Any ]] = None
27932832 ) -> Dict [str , dict ]:
27942833 """Retrieve metadata of an individual instance.
27952834
@@ -2801,6 +2840,8 @@ def retrieve_instance_metadata(
28012840 Series Instance UID
28022841 sop_instance_uid: str
28032842 SOP Instance UID
2843+ additional_params: Union[Dict[str, Any], None], optional
2844+ Additional HTTP GET query parameters
28042845
28052846 Returns
28062847 -------
@@ -2830,7 +2871,7 @@ def retrieve_instance_metadata(
28302871 sop_instance_uid
28312872 )
28322873 url += '/metadata'
2833- return self ._http_get_application_json (url )[0 ]
2874+ return self ._http_get_application_json (url , params = additional_params )[0 ]
28342875
28352876 def retrieve_instance_rendered (
28362877 self ,
@@ -2920,7 +2961,8 @@ def _get_instance_frames(
29202961 sop_instance_uid : str ,
29212962 frame_numbers : Sequence [int ],
29222963 media_types : Optional [Tuple [Union [str , Tuple [str , str ]], ...]] = None ,
2923- stream : bool = False
2964+ stream : bool = False ,
2965+ additional_params : Optional [Dict [str , Any ]] = None
29242966 ) -> Iterator [bytes ]:
29252967 """Get frames of an instance.
29262968
@@ -2940,6 +2982,8 @@ def _get_instance_frames(
29402982 stream: bool, optional
29412983 Whether data should be streamed (i.e., requested using chunked
29422984 transfer encoding)
2985+ additional_params: Union[Dict[str, Any], None], optional
2986+ Additional HTTP GET query parameters
29432987
29442988 Returns
29452989 -------
@@ -2968,40 +3012,49 @@ def _get_instance_frames(
29683012 frame_list = ',' .join ([str (n ) for n in frame_numbers ])
29693013 url += f'/frames/{ frame_list } '
29703014 if media_types is None :
2971- return self ._http_get_multipart (url , stream = stream )
3015+ return self ._http_get_multipart (
3016+ url ,
3017+ stream = stream ,
3018+ params = additional_params
3019+ )
29723020
29733021 common_media_types = self ._get_common_media_types (media_types )
29743022 if len (common_media_types ) > 1 :
29753023 return self ._http_get_multipart (
29763024 url ,
29773025 media_types = media_types ,
2978- stream = stream
3026+ stream = stream ,
3027+ params = additional_params
29793028 )
29803029
29813030 common_media_type = common_media_types [0 ]
29823031 if common_media_type == 'application/octet-stream' :
29833032 return self ._http_get_multipart_application_octet_stream (
29843033 url ,
29853034 media_types = media_types ,
2986- stream = stream
3035+ stream = stream ,
3036+ params = additional_params
29873037 )
29883038 elif common_media_type .startswith ('image' ):
29893039 return self ._http_get_multipart_image (
29903040 url ,
29913041 media_types = media_types ,
2992- stream = stream
3042+ stream = stream ,
3043+ params = additional_params
29933044 )
29943045 elif common_media_type .startswith ('video' ):
29953046 return self ._http_get_multipart_video (
29963047 url ,
29973048 media_types = media_types ,
2998- stream = stream
3049+ stream = stream ,
3050+ params = additional_params
29993051 )
30003052 elif common_media_type .startswith ('*' ):
30013053 return self ._http_get_multipart (
30023054 url ,
30033055 media_types = media_types ,
3004- stream = stream
3056+ stream = stream ,
3057+ params = additional_params
30053058 )
30063059 else :
30073060 raise ValueError (
0 commit comments