DICOMweb QIDO-RS Extractor
Pricing
from $0.35 / 1,000 record extracteds
DICOMweb QIDO-RS Extractor
Point at ANY DICOMweb QIDO-RS server (Orthanc, dcm4chee, Google Healthcare, DICOMcloud) and query medical-imaging metadata at study, series or instance level. Decodes DICOM-tag JSON to clean fields, keeps the raw tags. Metadata only, no pixels.
Pricing
from $0.35 / 1,000 record extracteds
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Point at ANY DICOMweb server and pull medical-imaging metadata into clean, structured rows — study, series or instance level — with one Actor.
QIDO-RS (Query based on ID for DICOM Objects, RESTful Services) is the DICOM PS3.18 web standard for querying imaging metadata. Every conformant PACS / VNA / cloud imaging store — Orthanc, dcm4chee, Google Cloud Healthcare API, DICOMcloud, and many more — exposes the same uniform /studies, /series, /instances wire grammar. This Actor speaks that grammar generically: give it a base URL, a query level, and optional QIDO filters, and it returns normalized rows from any of them. No pixel data is ever fetched — metadata only.
What it does
- Three query levels (
mode):studies— one row per matching study.series— one row per series (across all studies, or scoped under aStudyInstanceUID).instances— one row per SOP instance (all, under a study, or under a specific series).
- Standard QIDO filters:
PatientID,PatientName,StudyDate(single or range),ModalitiesInStudy,AccessionNumber, plusincludefield,fuzzymatching, and any extra query params the server supports. - Decodes DICOM+JSON for you. Results come back tag-keyed (
00100010= PatientName) with{vr, Value[]}structures. This Actor maps the common tags to readable field names, normalizes Person-Name values (Last^First→First Last), coerces numeric attributes — and keeps the complete raw tag object in_rawplus a name-keyedtagsprojection, so nothing is ever lost. - Multi-server: pass several base URLs to harvest a whole fleet in one run.
- Paginated & de-duplicated via
limit/offsetwith per-level UID dedup.
Example input
{"dicomWebUrls": ["https://demo.orthanc-server.com/dicom-web"],"mode": "studies","ModalitiesInStudy": "CT","StudyDate": "20060101-20061231","maxRecords": 500}
Example output (one study row, abridged)
{"_source": "https://demo.orthanc-server.com/dicom-web","_level": "studies","StudyInstanceUID": "2.16.840.1.113669.632.20.1211.10000315526","PatientName": "VIX","PatientID": "vAD7q3","StudyDate": "20061005","ModalitiesInStudy": "CT","AccessionNumber": "0","NumberOfStudyRelatedSeries": 1,"NumberOfStudyRelatedInstances": 250,"tags": { "PatientName": "VIX", "Modality": "CT", "...": "..." },"_raw": { "00100010": { "vr": "PN", "Value": [ { "Alphabetic": "VIX" } ] }, "...": "..." }}
Input reference
| Field | Type | Notes |
|---|---|---|
dicomWebUrls | array (required) | One or more DICOMweb roots (the part before /studies). |
mode | select | studies | series | instances. Default studies. |
studyInstanceUID | string | Scope series/instances under one study. |
seriesInstanceUID | string | With a study + instances, scope under one series. |
PatientID, PatientName, StudyDate, ModalitiesInStudy, AccessionNumber | string | Standard QIDO match filters. |
includefield | array | Extra attributes to return, or all. |
fuzzymatching | boolean | Approximate name matching (server-dependent). |
extraQueryParams | object | Any additional QIDO match keys. |
pageLimit | integer | Page size (limit). Default 100. |
maxRecords | integer | Row cap across all sources. Default 1000. |
bearerToken | string (secret) | Optional OAuth2 bearer for protected servers (e.g. Google Cloud Healthcare). |
extraHeaders | object | Optional extra request headers. |
Notes
- Sends
Accept: application/dicom+jsonon every request, so servers that default to multipart XML still return JSON. - Authentication is optional and never required or logged for public servers.
- A study/series with zero children, or a query matching nothing, is a real empty answer. A run where no source returns anything fails fast so you never get a silently-empty result.
- Metadata only. This Actor does not retrieve pixel data (that is WADO-RS, a different service).
Pricing
Pay-per-event: you are charged per record emitted. Subscription-tier discounts apply automatically.
Your spending limit is respected. If you set a maximum charge for the run, the Actor delivers only as many records as that limit pays for, then stops without making further requests to the DICOMweb server. Every row in the dataset is one charged record, and nothing beyond your limit is written. If the limit is below the price of one record, the run ends with 0 records and no charge.