DICOMweb (STOW, WADO, QIDO): Potential and implemntation sample
-
Upload
irt-b-com -
Category
Technology
-
view
340 -
download
1
Transcript of DICOMweb (STOW, WADO, QIDO): Potential and implemntation sample
17/03/2016 / 3 17/03/2016 / 3 17/03/2016 / 3 17/03/2016 / 3 Diffusion : public
PACS in the radiology department Transfer of images from modalities to the PACS
Context
17/03/2016 / 4 17/03/2016 / 4 17/03/2016 / 4 17/03/2016 / 4 Diffusion : public
PACS in the radiology department Transfer of images from modalities to the PACS
Context
Radiology Modality
17/03/2016 / 5 17/03/2016 / 5 17/03/2016 / 5 17/03/2016 / 5 Diffusion : public
Increasing use of medical images for diagnostic and treatment in several hospital departments Distribution of the image repositories intra and inter enterprise
Context
Radiology Modality
Cardiology Digital
pathology
17/03/2016 / 6 17/03/2016 / 6 17/03/2016 / 6 17/03/2016 / 6 Diffusion : public
Conventional DICOM DIMSE services not adapted to this context
Complex protocol (negotiations) Not optimal for large series of instances Not adapted to web applications
static IP addresses Requires specific network application layer (not HTTP)
DICOMweb (PS3.18) answers to these issues
Context
17/03/2016 / 7 17/03/2016 / 7 17/03/2016 / 7 17/03/2016 / 7 Diffusion : public
RESTful services to: Search for DICOM objects
QIDO (Query based on ID for DICOM Objects) DICOM PS3.18 6.7
Store DICOM objects STOW (STore Over the Web) DICOM PS3.18 6.6
Retrieve DICOM objects WADO (Web Access to DICOM persistent Objects) DICOM PS3.18 6.5
DICOMweb
17/03/2016 / 8 17/03/2016 / 8 17/03/2016 / 8 17/03/2016 / 8 Diffusion : public
Service
/studies Search for all studies
/studies/{StudyUID}/series Search for all series in study
/series Search for all series
/studies/{StudyUID}/series/{seriesUID}/instances Search for all instances in series
/studies/{StudyUID}/instances Search for all instances in study
/instances Search for all instances
Search for studies, series or instances GET {service}/[?query]
QIDO Request
17/03/2016 / 9 17/03/2016 / 9 17/03/2016 / 9 17/03/2016 / 9 Diffusion : public
Query
{attributeID}={value} Filter according to DICOM tags (eg. PatientName=IDEFIX)
Includefield={attributeID} Include a DICOM attribute that is not in the default response
fuzzyMatching=true/false Fuzzy semantic matching of person names
limit={maximumResults} Limit the number of results
offset={skippedResults} Skip the first results
Search for studies, series or instances GET {service}/[?query]
QIDO Request
17/03/2016 / 10 17/03/2016 / 10 17/03/2016 / 10 17/03/2016 / 10 Diffusion : public
QIDO Response
DICOM PS3.19 XML (application/dicom+xml)
<NativeDICOMModel> <DicomAttribute tag="00080020" vr="DA"> <Value number="1">20080701</Value> </DicomAttribute> <DicomAttribute tag="00080030" vr="TM"> <Value number="1">141007.000000</Value> </DicomAttribute> <DicomAttribute tag="00080050" vr="SH"> <Value number="1">KLNIX2014</Value> </DicomAttribute> <DicomAttribute tag="00080056" vr="CS"> <Value number="1">ONLINE</Value> </DicomAttribute> <DicomAttribute tag="00080061" vr="CS"> <Value number="1">CT</Value> </DicomAttribute> <DicomAttribute tag="00080090" vr="PN"> <PersonName number="1"> <Alphabetic> <FamilyName>REF</FamilyName> <GivenName>NAME</GivenName>
17/03/2016 / 11 17/03/2016 / 11 17/03/2016 / 11 17/03/2016 / 11 Diffusion : public
QIDO Response
DICOM PS3.19 XML (application/dicom+xml) DICOM JSON (application/json)
[ { "00080020" : { "Value" : [ "20080701" ], "vr" : "DA" }, "00080030" : { "Value" : [ "141007.000000" ], "vr" : "TM" }, "00080050" : { "Value" : [ "KLNIX2014" ], "vr" : "SH" }, "00080056" : {
17/03/2016 / 12 17/03/2016 / 12 17/03/2016 / 12 17/03/2016 / 12 Diffusion : public
Service
/studies Store DICOM objects
/studies/{StudyInstanceUID} Store one specific study
POST {service}
STOW Request
17/03/2016 / 13 17/03/2016 / 13 17/03/2016 / 13 17/03/2016 / 13 Diffusion : public
POST {service}/studies/{StudyInstanceUID} HTTP/1.1 Content-Type: multipart/related; type=application/dicom; boundary=myBoundary --myBoundary Content-Type: application/dicom Content-ID: {SOPInstanceUID} .. Binary DICOM object .. --myBoundary Content-Type: application/dicom Content-ID: {SOPInstanceUID} .. Binary DICOM object .. --myBoundary--
POST {service} Send either
DICOM objects
STOW Request
17/03/2016 / 14 17/03/2016 / 14 17/03/2016 / 14 17/03/2016 / 14 Diffusion : public
POST {service}/studies/{StudyInstanceUID} HTTP/1.1 Content-Type: multipart/related; type=application/json; boundary=myBoundary --myBoundary Content-Type: application/json; transfer-syntax={TransferSyntaxUID} .. JSON metadata .. --myBoundary Content-Type: application/octet-stream Content-Location: {BulkDataURI} .. BulkData element .. --myBoundary—
POST {service} Send either
DICOM objects Metadata and bulkdata separatly
STOW Request
17/03/2016 / 15 17/03/2016 / 15 17/03/2016 / 15 17/03/2016 / 15 Diffusion : public
« Store Instances Response Module » represented in XML or JSON format
STOW Response
Attribute Name tag Description
FailedSOPSequence 00081198 List of instances that could not be stored
>ReferencedSOPClassUID 00081150
>ReferencedSOPInstanceUID 00081155
>FailureReason 00081197
ReferencedSOPSequence 00081199 List of instances that were succesfully stored
>ReferencedSOPClassUID 00081150
>ReferencedSOPInstanceUID 00081155
>WarningReason 00081196
17/03/2016 / 16 17/03/2016 / 16 17/03/2016 / 16 17/03/2016 / 16 Diffusion : public
WADO Request
Retrieve study, series, instances, frames, bulkdata or metadata GET {service}
Service
/studies/{StudyUID} Retrieve a study
/studies/{StudyUID}/series/{seriesUID} Retrieve a series
/studies/{StudyUID}/series/{seriesUID}/instances/{instanceUID} Retrieve an instance
/studies/{StudyUID}/series/{SeriesUID}/instances/{instanceUID}/ frames/{FrameList}
Retrieve frames
{BulkDataURL} Retrieve bulkData
/studies/{StudyUID}[/series/{seriesUID}/instances/{instanceUID}]/metadata
Retrieve metadata of a study, a series or an instance
17/03/2016 / 17 17/03/2016 / 17 17/03/2016 / 17 17/03/2016 / 17 Diffusion : public
Content-type : multipart/related Retrieve study, series or instances
DICOM response Bulkdata response (compressed or uncompressed)
Retrieve metadata XML or JSON format
Retrieve frames Compressed or uncompressed
Retrieve bulkdata One bulkdata compressed or uncompressed
WADO Response
/ 18 17/03/2016 / 18 17/03/2016 / 18 17/03/2016 / 18 Diffusion : public 17/03/2016
Implementation Sample
17/03/2016 / 19 17/03/2016 / 19 17/03/2016 / 19 17/03/2016 / 19 Diffusion : public
Goal : implement a DICOMweb interface to any PACS Lightweight (pure JS client) Standalone Conformant to DICOMweb
b<>com [Rest DICOM library]
b<>com [Rest DICOM Library]
PACS
C-STORE C-FIND C-MOVE
RESTful services STOW/QIDO/WADO
DB proprietary
17/03/2016 / 20 17/03/2016 / 20 17/03/2016 / 20 17/03/2016 / 20 Diffusion : public
3 services : stow/qido/wado Grammar based URL parsing and validation (ABNF) Converting HTTP requests to standard DIMSE services
STOW to C-STORE QIDO to C-FIND WADO to C-MOVE
Server Module
17/03/2016 / 21 17/03/2016 / 21 17/03/2016 / 21 17/03/2016 / 21 Diffusion : public
Can connect to any DICOMweb compliant server Display studies present in the PACS
Client Module
17/03/2016 / 24 17/03/2016 / 24 17/03/2016 / 24 17/03/2016 / 24 Diffusion : public
Can connect to any DICOMweb compliant server Display studies present in the PACS Upload images via STOW
Compression on the fly De-identification (with encryption of original values) Resumable upload
Client Module