Category Archives: DICOM Search

DICOM Search – querying the database (preview 2)

Once DICOM Search has indexed the DICOM tags in your images, you can run queries against the tags table.  Selecting everything from the tags table, while possible, isn’t very useful and is very slow.

The reason is because there are over 2800 fields, and DICOM Search will struggle to maintain and display that many columns.  Thus, it is recommended that you select only the fields you are interested in.

You can quickly see which fields are available in your database by pressing F2 when in the SQL editor to bring up the Tags and Fields window.

Clicking on any of the tag values will add that value to the SQL editor area, so you do not need to manually enter the tag name.  In addition to the DICOM tags, there are also additional fields that DICOM Search populates in the tags table, as listed in the Field names tab.

In addition to your key fields, the other fields are used by DICOM Search to maintain a record of the processed images.  For the users, the useful fields are ds_thumbnail and ds_filenameds_thumbnail stores a thumbnail of the image and ds_filename stores the location of the image file when exported from your database, or when processed from your folder.

If the listed file name is present on your computer, you can open the image file in your DICOM viewer by double-clicking on the file name in DICOM Search.

Please see this post on how to index and extract images from your database to your computer using DICOM Search, and also how to add thumbnails to the tags database.

 

SQL syntax

The tag values are stored in a SQLite database, so you will use the SQLite SQL syntax to query the database.  In our example, our key fields are patientID and studyID, so we will always select those columns in case we want to query the source database.  We also select the ds_thumbnail and ds_filename columns to view the image thumbnail, and also have a link to the actual image.

Here are some examples of the types of queries you can run:

  • searching text values
    E.g. the Patient Name (tag group and element 0010,0010):SELECT patientID, studyID, ds_thumbnail, ds_filename FROM tags WHERE [00100010] = ‘Rubo’
  • searching for part of a text value
    E.g. to return all images where the patient name starts with Rubo:SELECT patientID, studyID, ds_thumbnail, ds_filename FROM tags WHERE [00100010] LIKE ‘Rubo%’E.g. to return all images where the patient name contains the word Rubo:

    SELECT patientID, studyID, ds_thumbnail, ds_filename FROM tags WHERE [00100010] LIKE ‘%Rubo%’

    E.g. to retrieve all images there the patient name ends with Rubo:

    SELECT patientID, studyID, ds_thumbnail, ds_filename FROM tags WHERE [00100010] LIKE ‘%Rubo’

  • searching date values
    E.g. the Study Date tag (tag group and element 0008,0020) for all studies made between Jan 1 1993 and Jan 1 1994:SELECT patientID, studyID, ds_thumbnail, ds_filename, [00080020] FROM tags WHERE [00080020] >= ‘1993-01-01’ AND [00080020] < ‘1994-01-01’Key point is you need to always enter the value you want to search for using yyyy-mm-dd format (year-month-date)
  • searching time values
    E.g. the Study Time tag (tag group and element 0008,0030), for all studies made between 1 PM and 2 PM.SELECT patientID, studyID, ds_thumbnail, ds_filename, [00080030] FROM tags WHERE [00080030] >= ’13:00′ AND [00080030] < ’14:00′Key point is you need to always enter the value you want to search for using hh:mm:ss format (hour:minutes:seconds).
  • searching numbers
    You can use all the usual equality and comparison symbols for numbers e.g. =, >, >=, <, <=E.g. the Intervention Drug Dose tag (tag group and element 0018,0028), where the value is greater than 25SELECT patientID, studyID, ds_thumbnail, ds_filename, [00180028] FROM tags WHERE [00180028] > 25

You can combine multiple conditions using the AND and OR operators e.g.

SELECT patientID, studyID, ds_thumbnail, ds_filename, [00080030] FROM tags WHERE ([00080020] >= ‘1993-01-01’ AND [00080020] < ‘1994-01-01’ AND [00080030] >= ’13:00′ AND [00080030] < ’14:00′) OR ([00100010] = ‘Rubo’)

To sort the results, use the ORDER BY option, and specify the field to sort by e.g. to sort the results by patient name (tag group and element

SELECT patientID, studyID, ds_thumbnail, ds_filename, [00080030] FROM tags WHERE ([00080020] >= ‘1993-01-01’ AND [00080020] < ‘1994-01-01’) ORDER BY [00100010]

To sort in descending order, add the DESC option after the field name e.g.

SELECT patientID, studyID, ds_thumbnail, ds_filename, [00080030] FROM tags WHERE ([00080020] >= ‘1993-01-01’ AND [00080020] < ‘1994-01-01’) ORDER BY [00100010] DESC

To limit the number of rows returned, use the LIMIT option.  For e.g. to retrieve the first 30 rows where the Intervention Drug Dose value is greater than 25, sorted by that field in descending order

SELECT patientID, studyID, ds_thumbnail, ds_filename, [00180028] FROM tags WHERE [00180028] > 25 ORDER BY [00180028] DESC LIMIT 30

 

DICOM Search – libraries (preview 1)

In DICOM Search, your DICOM images are organized into libraries.

You can populate each library with images from one or more databases, or from files on your computer.

Retrieving and indexing images from a database

DICOM Search can connect to PostgreSQL, SQL Server, Oracle, MariaDB, MySQL, and most popular database engines.  First, enter your connection details to connect to the database you want to process images from.

Enter the query to retrieve your images, together with the key fields used to uniquely identify the image.

You will then need to let DICOM Search know which are the key fields.

In our example, the patientID and studyID are the key fields.  Note that the key fields are for your own reference – when you query the tags database, the key fields are your link to the records in your source database.  When you want to extract the images or additional information from the source database, the key field values will help you in retrieving the relevant images.

DICOM Search will extract all the standard DICOM tag values and store them in a SQLite database.  You specify the name of this database file in the Tags database file name.

Indexing images from files on your computer

You can also index DICOM images if they are stored as files on your computer.   Enter the file paths and file search patterns to locate your DICOM files.  You can enter multiple values to search in.

 

Thumbnails

By default, only DICOM tag values are stored in the database e.g.

You can have DICOM Search create thumbnails for each of the image you process from your database or folder.

To create a thumbnail, select the Create thumbnail images option and enter the size of the thumbnail to create.

Once the thumbnails have been created, they will be displayed in a column named ds_thumbnail and can be displayed in DICOM Search together with the image tag values.

Exporting the images from your database

DICOM Search also helps you export your DICOM images from your database and store it in a folder on your computer.  To export the images, select the Extract images to folder option.

DICOM Search will then extract the images and store the file name in the ds_filename column.  When you run queries against the tags database and select this column, it will be highlighted in blue if the image file exists.  To open the file using your registered DICOM viewer, double click on the file name.

 

See also:

Cooking in the labs – a DICOM tags search application

This started out as a request from a user, and we thought it would be an interesting project for us.  We’re currently in the early stages of evaluating the feasibility of developing a DICOM tags search application.  The objective is to allow users to use SQL queries to search for DICOM images using values from the DICOM tags embedded in the images.

Step 1 – reading the tags from your DICOM images

We plan to allow you to read the DICOM images from a database, or from DICOM files already on your computer.

Step 2 – storing the data elements/tag values

This is the hardest part.  A DICOM image can contain both standard and private data elements/tags.  For a start, we will only be indexing most of the standard data elements/tags (over 2800).

Step 3 – querying the tag values

Once stored in a database, users can use SQL syntax to query the tag values.  We will also look into adding a query builder to help non-technical users.

Step 4 – displaying the images

Once we have the results of the query, we can display the images using the user’s preferred DICOM viewer.

Issues/bottlenecks

We do not have any experience working with PACS nor have access to any such system.  We are approaching this purely from a database developer perspective – read the images, store the tag values in a database, allow users to query the database, and display the results.

If you are interested in such an application and can spare some time to help us test the application as we go along, or there are features you would like to see in such an application, please drop us an email at support@yohz.com.  Thank you.

See also: