DICOM Search – improved DICOM view (preview)

In the latest iteration of DICOM Search, we can now display your search results in a patient/study/series listing this way:

  • thumbnails are now displayed in the patient/study/series listing

This allows you to easily view the image without having to open it in the main viewing area.

  • you can filter on multiple values

In the above example, DICOM Search will display the images belonging to any patient/study/series containing the word brain OR rubo.

  • similarly, you can also filter on multiple values on the tag values

In the above example, only tags containing the word patient or physi are displayed.

You can now also display multiple images in the DICOM viewer.  You can adjust the position and size of each image panel to your requirements.  For e.g. if you are displaying 3 images, this could be one layout:

or you could lay them out this way:

You can open as many image panels as you require, limited primarily by the size of your display.

When you open multiple image panels, the DICOM details are also displayed for each image.  In the above example. the patient information would be displayed this way:

Similarly, the DICOM tag values found in each of the image are displayed this way:

If you apply a search filter, then only the tags matching the filter are displayed for all the images.

In the image viewer, there is now a magnification layer option.  Say you opened the following image:

You now have the option to magnify a part of the image, and also choose the magnification level and magnification area.

We hope to release DICOM Search early next month.  If you would like to have early access to the product and give it a try, please drop us a line at support@yohz.com.  We welcome any feedback you may have.

Merge or combine TIFF files

We had a user who recently asked if SQL Blob Export is able to merge or combine the extracted single-page TIFF files from her database into multi-page TIFF files.  This feature isn’t built-in, but we have provided an external command line application (MergeTiff) that you can freely use to perform the same task.

You can use MergeTiff on any tif files, including those extracted using SQL Image Viewer, SQL Blob Export, and Access OLE Export.  It is important that the extracted files use names that group the pages into the right order.

For e.g. the default naming convention for exported files in SQL Image Viewer is row and column index, so assuming each row in your result set only had 1 blob column, your exported files would be named this way:

0001_0001.tif
0002_0001.tif
0003_0001.tif

This isn’t going to help MergeTiff determine how to group the files.  What you need is a ‘grouping’ value e.g. say a CustomerID column that identifies the customer each image belongs to.  We then use this naming convention in SQL Image Viewer/ SQL Blob Export/ Access OLE Export:

<CustomerID>_<%row:0000%>

and our exported files may be named this way:

A00123_0001.tif
A00123_0002.tif
A00123_0003.tif
C72186_0006.tif
D12472_0007.tif
E88822_0004.tif
E88822_0005.tif

In this way, we know that for customer A00123, we need to merge 3 files, for customer E88822, we need to merge 2 files, and so on.

To use MergeTiff, you need to provide at least 1 parameter:

  • the search pattern for the files to process using the -i  parameter e.g.

MergeTiff.exe -i “g:\exported images\*.tif” 

Other parameters supported by MergeTiff:

-o

this is the output folder to store the merged files.  If not provided, the merged files will be stored in the same folder as the source files.  If you want to store the merged files in a different folder, you would need to provide the -o parameter e.g.

MergeTiff.exe -i “g:\exported images\*.tif” -o “g:\exported images\merged\”

-d

this is the delimiter that the source file name uses to separate elements, default value is _

In our example, our file name elements use the underscore character e.g. _.  You might use another symbol e.g.

A00123-0001.tif
A00123-0002.tif
A00123-0003.tif
E88822-0004.tif

In this case, you need to provide the -d parameter and the delimiter character e.g.

MergeTiff.exe -i “g:\exported images\*.tif” -o “g:\exported images\merged\” -d “-“

-g

this is the grouping element index, default value is 1.  In our example, the grouping element is the first element i.e. all the characters before the first delimiter i.e.

A00123
E88822
C72186
D12472
E88822

If instead our file named had been named this way:

scanneddocsA00123_invoice1005_A00123_0001.tif
scanneddocsA00123_invoice1005_A00123_0002.tif
scanneddocsA00123_invoice1006_A00123_0003.tif
scanneddocsC72186_invoice1008_C72186_0006.tif
scanneddocsD12472_invoice2010_D12472_0007.tif

and we still wanted to merge all documents belonging to the same customer, then our grouping element is the 3rd element, and we would need to use the -g parameter e.g.

MergeTiff.exe -i “g:\exported images\*.tif” -o “g:\exported images\merged\” -g 3

-n

this is the naming element index, default value is 1.  Following on from the above example, supposing we merge our files by invoice number instead of customer code, we would need to use both the -g and -n parameters e.g.

MergeTiff.exe -i “g:\exported images\*.tif” -o “g:\exported images\merged\” -g 2 -n 2

-ow

use this parameter to overwrite any existing files of the same name

If you want MergeTiff to overwrite any existing files, use the -ow parameter e.g.

MergeTiff.exe -i “g:\exported images\*.tif” -ow

-r

use this parameter to also process files in the input path subfolders

To process files recursively beneath the input path, use the -r parameter e.g.

MergeTiff.exe -i “g:\exported images\*.tif” -r

You can download MergeTiff from here.

DICOM Search walk-through (preview)

We’ll do a walk-through on how to index your DICOM files and how to retrieve and display the images you need.

We start by first creating a library in DICOM Search, and selecting the Add/update images from folders option.

We then enter the file search pattern which will be used to locate our DICOM files.  Here, we’ll create thumbnails of our files, and enter the database file name to store the tag values and thumbnails in.

DICOM Search will then start processing the files and report the status as it goes along.

Once done, we can now run queries on the database.  In this example, we want to retrieve all MRI images where the study description contains the word head or torso.

At this point, you must be wondering how are we to remember the group and element values for each of the tags we want to search on.  You don’t have to remember those values.  Pressing F2 will bring up a tags window where you can search for any tag values by description.

E.g. if we search for modal, we can see all the tag values for modality.

Likewise, if we search for study, we can see the tags containing the word study.

When we run our query, all images matching our search criteria are returned.

Depending on our query, we may choose to return only the tag values we are interested in seeing, or in our example. all of the tag values because we entered

SELECT * …

DICOM Search offers an alternative view to display the images returned by your query.  This is the DICOM results viewer.

On the left, the query results are grouped by patient, study, series, and and related images.

You can display any of the image file in the main area simply by selecting it here.  DICOM Search will display the frames of the images at the top, and the selected frame in the main area.  You can play the sequence of images, display a single frame, view the transition from one frame to another and more in this area.

On the right, the values of the DiCOM tags are listed.  There is a patient specific tab that displays the patient data together with some image context tags

and a Tags tab that displays all the tag values found in the image.

If you have any suggestions on how we can improve on this new view, please do drop us a line at support@yohz.com.  Thank you.

See also:

Incorrectly extracted files in Access OLE Export/SQL Blob Export

Access OLE Export / SQL Blob Export may sometimes extract items that appear to be wrong.  For e.g. it might extract an expected PDF file as an image file.  To troubleshoot such issues, we need your help in sending us the data exactly as stored in your database to us for further investigation.

One way to extract the data is to use SQL Image Viewer.  Once installed, connect to the same database you were trying to extract your items from, and run your query to select the wrongly extracted item(s).

Select the item you’re having problems with, right click to bring up the context menu, and select the View as hex option.

SQL Image Viewer will display the selected item in a hex viewer.  Click on the Save button to save the raw data to a file.

and send us that file at support@yohz.com.  Having the raw data to work with will help us immensely to determine why Access OLE Export / SQL Blob Export appears to be extracting your files wrongly.

 

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

See also:

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:

Search PDF using Easy PDF Search

Easy PDF Search lets you search PDF files you own fast.  Unlike other PDF tools, Easy PDF Search will create an index of your PDF file contents.  When you search the file for the first time, Easy PDF Search will index the files automatically.  Subsequent searches will use the index, which can be up to 100x faster than normal searches.

This guide gets you started on configuring Easy PDF Search to search PDF files, but broadly the steps are as follows:

Create a library

A library is a collection of PDF files.  You must create at least one library, and you can create as many libraries as you want.

A library tells Easy PDF Search where your PDF files are located.

When you search PDF files for words, you can choose to search all or some of your libraries.  This gives you great flexibility in limiting your search to specific sets of files.

The first time that Easy PDF Search searches your PDF files, it creates an index of the files’ contents.  On subsequent searches, it uses the indexes directly, which can speed up the search up to 100x faster.

If your PDF files get updated, Easy PDF Search will automatically recreate the indexes for that file.

Enter your search words/phrases

Enter one or more search words/phrases to search for.  This guide provides more details on how you can perform both simple and advanced searches.  Basically, advanced searches allow you to use operators to refine the search.

For e.g. entering the words

data consistency and data concurrency 

will return all files containing the words data, consistency, and, and concurrency.  Entering it in double quotes

“data consistency and data concurrency”

will return all files containing the phrase data consistency and data concurrency.  Entering it this way

“data consistency” OR “data concurrency”

will return all files containing the phrase data consistency or data concurrency.  Entering

“data consistency” AND “data concurrency”

will return only files containing the phrases data consistency and data concurrency. Entering

“data consistency” NOT “data concurrency”

will return only files containing the phrase data consistency and does not contain the phrase data concurrency.  Finally, entering

NEAR(“data consistency”, “concurrency”, 20)

will return files containing the phrase data consistency and where the word concurrency appears 20 words before or after that phrase.

Review the search results

The search results are summarized, and the pages where the search words/phrases are listed.

Expanding the file summary will list out all the pages where the words/phrases were located together with the number of occurrences.

Clicking on a listed page will display the page from your PDF file and the search words/phrases are highlighted.

Beyond just viewing your search results, you can perform additional tasks like combining all the pages from the search results into a single PDF file.  Using the search results, you can also  extract the pages into separate PDF files, extract text and images from those pages, and export those PDF pages as images.

Download a free 14-day trial now and experience how Easy PDF Search makes searching your PDF files so much easier and faster.

See also:

Speeding up searches in Easy PDF Search

When you enter words to search for in Easy PDF Search, you need to be mindful of whether you want to search by each individual word, or the phrase.

For e.g. if you enter the following:

Easy PDF Search will search your library of PDF files for pages that contain the word data, or consistency, or and, or concurrency.  This will slow down the search process significantly because of the inclusion of the word and, which is a common word.  The search will complete faster if you omit the word and.

If however you wanted to search for pages that contain the phrase data consistency and data concurrency, you need to enclose the entire phrase in double quotes i.e.

Now only your PDF files that contain the phrase data consistency and data concurrency are returned by the search.  The search will also complete faster because you are no longer searching for individual words.

You may also have wanted to search your PDF files for pages that contain the word data consistency or data concurrency.  You can do this in one of two ways.  Either enter each phrase on a separate line e.g.

or use the OR operator this way:

Both methods of entering the search phrases will return the same results.  The only difference lies in how the results are displayed.  In the first method, each phrase is displayed under separate headings.

while using the OR operator displays the results under a single heading.

So in summary, a phrase search is faster than a multiple word search, and if you must perform a multiple word search, omitting common words will speed up the search.

 

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:

Raw image file support in SQL Image Viewer

SQL Image Viewer 10 adds support to display RAW camera image files.  If SQL Image Viewer fails to display your RAW images, please send us a copy of the file for further analysis, to support@yohz.com.

You need to take into account the following when exporting RAW image files from your database using SQL Image Viewer.  Raw image files are exported using the .raw extension by default.  This is because SQL Image Viewer is unable to distinguish between the different raw formats (cr2, crw, nef, tec).

To export the raw image files using the correct extension, you need to have a column that contains the source file name. For e.g our result set contains the file name in the source column.

We cannot use the source column as is in our naming convention like this:

because it would include the path portion.  To use only the file name portion, we use the FILENAME operator e.g.

The FILENAME operator tells SQL Image Viewer to treat the value in the column as a fully qualified file name, and to use only the file name portion of the value.

What is we wanted to name the exported images using the ID column?  We will need to use the FILEEXT operator in this case.  Our file naming convention will be entered like lthis:

The FILEEXT operator tells SQL Image VIewer to treat the value in the column as a fully qualified file name, and to use only the file extension portion of the value (including the . separator).

By using the FILENAME and FILEEXT operators, you have more control over how the exported files are named, and how you can use elements from columns containing file names.

If you have any questions or requests, please do drop us a line at support@yohz.com.