Matt's PACS Blog

Ramblings about PACS, applications I am writing, and miscellaneous irrelevant topics.  

DocScanFx Version 3 Released!

posted Jan 3, 2017, 10:27 AM by Matt Granger

Happy New Year Everyone!

     I'm happy to say that the latest release of DocScanFx is completed.  It's actually been out and in production for months now but there were a couple final features nagging at me that were missing and I just didn't want to announce it officially until they were done.  I've included links to two videos below which shows the general features of the application and also a separate video that briefly shows the electronic forms and annotations features.   I spent most of 2016 doing a complete rewrite of the original DocScan first written way back in 2007.  At that time version 2 was around 2000 lines of code.  The new version 3 is closer to 15,000 lines, but the executable itself is only 1.3 MB.  There are no additional application dependencies to install either (like .Net), e.g., DocScanFx is completely portable.

     If you are new to DocScan, it's starting point is as a PACS paper document to DICOM image conversion program.  The key difference between DocScanFx and other applications is DocScanFx's use of "modes" to predefine all the settings for how the images should be created.  For instance, most of the time scanned documents are added to exams which already exist in PACS so you would perform an archive query to find the exams to attach them to.  However you may have exams where all the exam information is the paperwork which needs to be scanned into PACS and therefore you'd need to do a modality worklist query instead.  DocScanFx allows each "mode" to query a different archive or MWL source for information.  The modes can also specify a vast array of different settings from specific series numbers & series descriptions, to various workflow options.  This allows DocScanFx to generate vastly different informational images to add to your PACS exams without burdening your techs with needing to reconfigure a program to meet those various settings.  You don't have to settle on one generic format for how scanned images will be acquired.  You can fine tune workflow for requisitions, patient worksheets, medication questionnaires, prelim reports, and based on exam modality, too.  Besides document scanning, DocScanFx can also acquire images from screen capture, file import, folder monitoring, and generate its own images from electronic forms.  It can be launched via XML integration if your PACS or RIS supports that and it currently is integration with both Merge RadSuite PACS and Merge PACS 7.

     Many sites have worked to integrate their PACS into their RIS or EMR in order to eliminate document scanning.  That's great and I applaud your efforts.  However, there still are times when various documents need to be in PACS alongside the exam images and doing so will present a better global view for your radiologists to read patient information.  DocScanFx is the best document scanning/acquisition application available.  No other program on the market has the flexibility, customization, or ease of use that DocScanFx has.  Check it out and if you have any questions just e-mail me at  Have a great year!

DocScanFx v3 Overview

DocScanFx Forms and Annotations

Warning - the next video is over 14 minutes long and contains subject matter 
that it typically only interesting to PACS administrators.  Watch at your own risk :)

DocScanFx - Beyond Scanning


DocScan v3 - Update

posted Sep 23, 2016, 10:11 AM by Matt Granger

Delays, delays...  Sorry about the lack of updates since my last post.  I'm so eager to share all the new details of this new version.   I should be providing more info on v3 in the next few weeks, but certain discussions that must take place with these matters are not complete yet.  I've had DocScan v3 (which by the way is officially going to be called DocScanFx) running for over a month now on about a dozen computers and it's just been flawless.  More to come!

DocScan 3 - Rumors

posted Jun 14, 2016, 10:29 AM by Matt Granger   [ updated Jun 14, 2016, 10:39 AM ]

Hello All - I think three different times I've said on this blog that I was doing a complete rewrite of DocScan.  Well folks, it's 98% done!  Here's two screen shots below to wet your appetite.  A few of the changes:
  • There is no longer a 6 image limit.  6 thumbnails are shown at a time, but if there are more than 6, then buttons appear to page to the next set of thumbnails.
  • You can easily reorder the thumbnails.
  • Screen Capture to grab a portion of your screen as an image. Great for snagging a bit of your EHR's patient history or some other relevant source into your PACS as an image.
  • The scanning interface is completely adjustable.  You get to decide what image manipulation buttons are shown and what methods of acquiring images are given to your end users.  
  • It works great standalone or it can be XML driven for PACS integrations (yes, RadSuite sites and Merge PACS 7 users - it works great in integrated mode and now it doesn't require any background processes, e.g., DocScan gets called, runs, and closes - sweet!).  
  • You can turn on an anonymization feature that will change queries to your production archive or MWL into anonymous versions in real time.  This is a stellar feature that lets you troubleshoot without exposing your PHI.  You can also choose to have the DICOM queries saved to the clipboard for troubleshooting and if the anonymous feature is on, the clipboard copies contain anonymous data, too.
  • Displayed date formats can be changed to accommodate the usual variations in international standards (MM/DD/YYYY, DD/MM/YYYY, YYYY/MM/DD)
Well, that's enough for now.  More news soon!

DocScan Update!

posted Mar 23, 2015, 1:02 PM by Matt Granger

My sincere apologies to everyone who may have been trying DocScan lately.  Looks like the latest .32 version I had was missing some files in the Resources folder.   You can either download just the missing files here and add them to your Resources folder, or just download the all new .32b version which has the missing files into.

Here's some info I provided to the kind people who helped me realize I was missing those critical files, so I thought I'd share it with you.  Below are some command line arguments you can run in order to manually perform a query of your DICOM archive or Worklist using the dcm4che tools "dcmqr" or "dcmmwl". It's a nice way to mess around with manual queries if you're in to that kind of thing.  Just go to a command prompt, navigate to the C:\PACSMATT\DocScan\Resources\dcm4che-2.0.12\bin folder and then type one of the commands below:

Worklist Query
dcmmwl.bat -L CallingAeTitle CalledAeTitle@WorklistIP:WLport -q00100020=PatientIdToQuery

Archive Query
dcmqr.bat -L CallingAeTitle -noextneg CalledAeTitle@ArchiveIP:ArchivePort -q00100020=PatientIdToQuery –rStudyDescription

CallingAeTitle - Your workstation's AE title (be sure your WL or archive is setup to accept queries from this AE!)
CalledAeTitle - Your WL or Archive's AE title
WorklistIP - The IP address of your worklist server
WLport - The port of your worklist server
ArchiveIP - The IP address of your Archive server
ArchivePort - The port of your Archive server
PatientIdToQuery - The patient ID you want to query

You can query using all sorts of other info, search out the help docs on dcm4che's site and you can see the other instances in which it can be used.  Have fun!


posted Oct 29, 2014, 9:59 AM by Matt Granger

I just uploaded DocScan with bug fixes and a few new features.  The main one being the ability to change the listening port dstrigger uses:

Version updates -  Added IP address lookup via "COMMON -> ListenIP" to a specific IP address - also supports pulling current IP  (defaults to if none specified)
              Added Port specification via "COMMON -> ListenPort" to a specific IP port (defaults to 33991 if none specified) -  Changed the way the DICOM files get processed and sending method for better Win7 support. -  Removed java dependency - only using dcmtk now -  Added debug feature to Common section of INI file quick copies DICOM queries to the clipboard DebugQueryToClipboard=True -  Auto close capability and enabled RequestMode to work from dstrigger -  Added option to change the Calling AETitle based on the mode.  It is queried in both the SEND and QUERY functions. -  Added new alternative logic for the date & time options for when the modprompt shows up for end users. -  Added ability to rotate 90 degrees in either direction instead of just 180 degrees.  Also updates context button text to reflect 90 or 180 degrees.
           New INI values are: 
                            RotateImageDirection=l or r (left or rigth rotation)     
                    RotateImageQuarters=1 or 2  (90 degrees or 180 degrees)
                            No restart of DocScan is necessary if changes are made to above values (although context menus won't update until GUI closed and reopened

Ugh Bugs!

posted Jul 3, 2014, 9:02 AM by Matt Granger

Version is available - I found a looping issue in the RequestMode which caused a problem if you cancelled the MRN search.  All fixed now!

Minor Update DocScan

posted Jul 1, 2014, 11:10 AM by Matt Granger   [ updated Jul 2, 2014, 11:01 AM ]

I fixed a couple of bugs in the dstrigger.exe file that were causing loops where it didn't think DocScan was running and also where in an integrated PACS setup it was always reverting to the default mode instead of whatever you had chosen from the Start Menu Tray.  THese issues have been corrected.  Other than that everything is the same.

Next I'm going to add some extra command line parameters for when you use a desktop icon to start it in "RequestMode".  The new options will allow you to pre-pick the Mode and also lock the mode to that value if you don't want the end user choosing something else.

DocScan - any takers?

posted Jun 27, 2014, 3:02 PM by Matt Granger   [ updated Jul 1, 2014, 11:07 AM ]

Hello all!
     I added in a few features in DocScan version that might be useful to others.  I need your help testing it out so don't go rolling this onto all your production machines without trying it.  Let me know if you have any questions.  New features:
  • Auto-start DocScan with dstrigger.  You no longer need to have DocScan running in the system tray all the time.  If you have an integration between DocScan and your PACS, when dstrigger gets called it will start DocScan for you if it isn't already running (you can disable this if needed).  In addition there is an INI setting that forces DocScan to exit without prompting after images are sent so that DocScan is only actually running when you need it.
  • Shortcut to start DocScan scanning.  I've been getting more requests for the ability to use a desktop shortcut (or any kind of shortcut) to start a manual scanning process. Obviously the last release lets you do manual scan via a shortcut by launching dstrigger without any command line parameters (or just some).  Now if you add the one command line paramter like this: C:\PACSMATT\DocScan\dsTrigger.exe RequestMode then Docscan will pop up a new GUI that asks for the mode you want and the MRN you want to query.  It's just like using the system tray.  There's an example shortcut in the 
  • Better Windows 7 support - I changed the method that I obtain the results of the DICOM archive and worklist queries to be more compatible with Windows 7 (and better in general all around).  So you should have less problems on Win7/8 PCs.
The latest archive has all the necessary files in it for DocScan to run.  Just unzip it anywhere (but I'd recommend the path shown above), and edit the DocScan.INI file to suit your site's needs.  Refer to the original instruction PDF for the basics or read through all the help in the INI file for configuring it.  Try running dstrigger by itself or try adding either the one command line parameter referenced above, or populating multilple values to integrate it with your PACS.  Here are the two most recent INI file settings I added:

;  Options: 
;          True    - (Default) Dstrigger checks if DocScan.exe is running and if itis not it starts it.
;          False   - Dstrigger will not attempt to start DocScan.
;  Notes:
;          Be sure to set AutoStopDocScan to "True", too, if you want to prevent it DocScan from always running in the background.

;  Options: 
;          True    - DocScan will close itself without prompting the end user after it has sent the images
;          False   - (Default) DocScan remains running in the system tray after sending images
;  Notes:
;          Only set this to True if you are using the AutoStartDocScan=True option, too

DocScan Update

posted Mar 18, 2014, 1:43 PM by Matt Granger   [ updated Mar 18, 2014, 1:43 PM ]

Hello All!  Just a really fast update that DocScan version now supports a patient gender value now in the dstrigger GUI I talked about last time and also in the command line parameter in position #5 (previously it was just blank).  So you can now send an M, F, or O in that field and it will pass to DocScan and be added to all your images.  So, Merge PACS fans, no more jailed images from DocScan.  Have a great day!

DocScan available!

posted Dec 31, 2013, 2:57 PM by Matt Granger   [ updated Dec 31, 2013, 3:17 PM ]

     Happy last day of 2013 and soon to be 2014!  I never thought I'd be doing this, but here is the absolute latest version of DocScan 2 with new feature that you can manually input all the patient and exam details instead of only allowing archive or worklist queries!  I think this has been the most asked for feature in DocScan over the years and until Brent from Grand Rapids, MI recently asked me if this could be done I had planned only on implementing this in DocScan 3.  However, Brent's question about this nudged me closer to an idea that would make it pretty easy to implement by modifying the dsTrigger piece of DocScan.  

     Are you using dsTrigger?  You are if you're a Merge RadSuite PACS site because it's what lets you have a button in PACS to transfer all the patient/exam info to DocScan instead of doing a worklist or archive query.  dsTrigger.exe accepts these command line arguments to allow any application that can pass this info to do a direct integration with DocScan:

Text Box

C:\PACSMATT\DocScan\dsTrigger.exe "{StudyDate}" "{StudyTime}" 
"{AccessionNumber}" "{Modality}" "" "{ReferringPhysiciansName}" 
"{StudyDescription}" "{PatientName}" "{PatientID}" "{PatientBirthDate}" 
"" "{StudyInstanceUID}" 

     Blah, blah, blah, right?  Well, it finally dawned on me to just put a user interface in dsTrigger so if dsTrigger.exe is run by itself it will display this GUI to allow the input of the patient information manually:

     Note that the red field labels indicate those fields are required and in this screen shot an option was turned on to require an accession number, by default the accession is not required.  Also, there are a lot of subtle improvements in DocScan including the ability to rotate images 90 degrees instead of just 180 degrees, DocScan will try several times to convert the files if it happens to fail at first, and countless other things I hope to document for you in future posts.  Until then, Manual Entry is my New Years and belated Christmas gift to you.  Have fun!

     Just download the new zip archive here to get the latest version.  This archive has a sample DocScan.INI config file in it with full explanations of the new options related to dsTrigger Manual input.  There isn't an installer for it.  You'll need to make a shortcut to the dsTrigger.exe file somewhere for your end users to click on.  Try it out and let me know if you run in to any issues.

Enjoy and Happy New Year!!!

Boring stuff - here are the new DocScan.INI options so you can see them without downloading anything:

Text Box

;  Options: 
;          YES    - DocScan will listen on port 33991 for "dsTrigger.exe" application to send patient/exam info.
;          NO     - (Default) No manual demographics mode or integration.
;  Notes:
;          This must be set to YES to use the new manual demographics feature or integration via PACS.

;  Options:
;          List of pipe ("|") delimited modalities that for the manual mode drop down list
;   Default: "CR|CT|DX|MR|NM|*OT|US"
;  Notes:
;          Manual mode will make the first modality it finds in this list with an "*" in front of it the default modality.
;          (See "OT" example above)
ManualInputModalities = CR|CT|MR|*NM|OT|US

;  Options:
;          List of pipe ("|") delimited exam names for the end user to choose from.  Example: *Scanned Documents|History|Priors
;          Default: this field is empty if no exam names are defined
;  Notes:
;          "*" in front of the one of the items in the list will make it the default item.
;          Users can type free text in this field unless "ManualInputDoNotAllowTypedStudyDescriptions" is set to True
ManualInputStudyNames = *Scanned Documents|History

;  Options:
;           True   - Users cannot type free text and can only select predefined Study Descriptions
;           False  - (Default) Users can free type study descriptions or select from the drop down list.

;  Options:
;           Setting these three options to 'True' will require the end user to input data in the relevant field
;           Default: these three fields can be blank by default.

;  Options:
;          True = forces the Manual input user interface to appear even when all the command line arguments for dsTrigger are populated
;          False = (Default) If all the command line arguments are populated for dsTrigger the manual user input GUI will be skipped.
;  Notes:
;          This setting only is relevant when there is a PACS integration that is passing patient & exam demographic info to the command line
;          of dsTrigger.  If you aren't able to have a full PACS integration with DocScan you can prepopulate certain fields by making 
;          shortcuts to dsTrigger and adding command line arguments for the defaults you want.  See the DocScan documentation for the command
;          line format to do this or contact me.

;  Options:
;           True    - If the end user clicks the label "SIUID" in the user interface a new Study Instance UID will be generated.
;           False   - (Default) The SIUID cannot be changed from what is passed via the command line or generated by DocScan.
;  Notes:
;           You will probably never want to enable this unless you have a specific scenario that would require the end users to alter
;           the SIUID for an exam.  I added this to allow a situation where you have a full or partial PACS integration and you want
;           to be able to create a new study instead of sending the scanned documents to the original study.  Again, this would be
;           rarely needed so I caution against enabling this feature.

1-10 of 52