Construct a QIDO-RS study-level query by sending a GET request to {base_url}/studies with query parameters for search criteria: PatientID (00100020), PatientName (00100010), StudyDate (00080020), or ModalitiesInStudy (00080061)
Set the Accept header to application/dicom+json to receive results as a JSON array of DICOM attribute objects; each object uses DICOM tag numbers as keys with VR and Value sub-fields
Apply date range searches using the StudyDate parameter with a range format (e.g., 20250101-20250630) to limit results to a time window; unbounded queries on large servers will be rejected or return truncated results
Drill down to series level by querying {base_url}/studies/{StudyInstanceUID}/series, optionally filtering by Modality (00080060) to find only CT or MR series within a study
Query at instance level using {base_url}/studies/{StudyInstanceUID}/series/{SeriesInstanceUID}/instances to enumerate individual SOPInstanceUIDs needed for WADO-RS retrieval
Handle pagination using the offset and limit query parameters if supported by the server; check response headers or the returned result count against your limit to determine whether additional pages exist
Known gotchas
DICOM tag keys in QIDO-RS JSON responses are zero-padded 8-character hex strings (e.g., '00100020' for PatientID) — do not use shorthand or decimal representations when parsing response attributes
Fuzzy matching behavior for PatientName queries varies by server implementation; a query for 'Smith' may or may not match 'Smithfield' depending on whether the server supports wildcard matching and how it interprets the DICOM fuzzy matching attribute
QIDO-RS does not return pixel data or large binary attributes — it returns metadata only; do not expect image data in QIDO responses even for single-instance queries
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp