Purpose

PRDR is a reporting tool that is integrated into the Emageon PACS. It generates custom forms for your end users to fill out and then routes these forms via printers, e-mail, alphanumeric pager, or any combination of those and logs all the important details for you to generate pretty graphs with (you'll have to generate the pretty graphs, PRDR doesn't do that).

PRDR started out as a very successful discrepancy reporting tool we used at our facility. I wanted a good method for our radiologists to provide feedback to our ER doctors when they found a discrepancy. This involved getting our radiologists to send a report to the ER's network printer with all the pertinent exam details and whatever the discrepancy was about. I also wanted this report to send e-mails to the supervising nurse so he/she could reconcile that the discrepancy reports had been acted upon. In addition, having all this information in log files allowed us to easily calculate discrepancy statistics for our ER.

As I refined PRDR, I realized that it could be used for a wide variety of reports besides discrepancies. I changed the program so that it could be customized to be many different types of reports. We currently use PRDR for ED & Nighthawk discrepancies, ED Preliminary STAT results, Tech QC, PACS Problem Reports, outside radiologist read requests, generating forms for patients to sign when picking up CDs or film, and more.

Setup

Download the PRDR from the "Attachments" section at the bottom of this page. We'll just use the generic setup to create an initial macro and then you can modify it to do what you want once it is running.

Unzip it and save the files to C:\PACSMATT\PRDR

Browse to the PRDR folder and double click on the PRDR.exe file. You should see this:

Click OK on this message to copy this text to the clipboard so you can paste it down later. (You don't want to have to type all that in.)

Make a macro to launch PRDR in PACS by going to Emageon AV -> File -> Preferences -> Macro Manager and click "Add".

Whatever you name the Macro is how it will show up in the menus in AV, so choose wisely. I named this one "ED Discrepancy" (and you should too since you are just following an example for now):

Click "Add", choose "New OS Action" and click "OK".

Fill in the name field (this name doesn't really matter), put the cursor in the "Command(s)" field and press CTRL+V to paste in the text from step #3. It should look something like this:

Don't worry about what it means for now. Just get the macro made and you can figure it out later.

Click OK - OK - Close

Now you just need a way to run the macro. In AV, go to FILE -> PREFERENCES -> Customize Image Display User Interface.

Optional: I like the right click menu for the reports and I like to add a folder to the right click menu to hold all the various PRDR reports I make. If you are only adding one or two reports you might skip this step and just add the reports at the root of the right click menu. On the RIGHT-CLICK tab, choose ADD -> Label. Then rename it "PRDR Reports" (or whatever you want) and click OK. Move it up/down & left/right on the menu with the arrows to put it somewhere nice within the right click options.

If you did step #11, select the Label you created, otherwise, decide where you want to access the macro from (right click, keystroke, toolbars, etc.), select the location and choose "Add".

Choose the "Macro: ED Discrepancy" (or whatever you named it) and click "OK". You should end up with something like this:

Click OK until you get back to your worklist screen.

Open an exam and right click in the viewport. You should have a nice Reports menu that expands out into the ED Discrepancy report:

Click "ED Discrepancies" and the form should appear for you to fill out.

Fill it in and click Send Report.

And, drum roll please... nothing happens, right? Well, that is because you haven't modified the PRDR.INI file to make it do anything fun yet. It just logs the data to a text file. If you browse to the C:\PACSMATT\PRDR\Logs folder you will find the log files that it created. Logs are boring though so keep reading to learn how to make PRDR do some neat stuff.

How It Works

PRDR uses Emageon PACS macros to run the PRDR.exe file with a bunch of command line arguments after it. Command line arguments are a way to pass information to a program when it is run so it can use it. Look at the command line arguments we are passing to PRDR:

The first command line argument is "ED". That's just the name of this particular form and the name "ED" corresponds to a section in the PRDR.INI text file that specifies how the form should look: section [Report-ED].

How about the rest of those command line arguments? Recognize them? You should, they're the same descriptors used in Emageon for the information displayed in the labels. Emageon replaces those tag descriptors in the curly brackets with the information from the DICOM header of the image that the user launched PRDR from. There are quotes around each curly bracketed descriptor so that if one of the tags ends up having a space in it, it will still look like one command line argument. Like this: {StudyDescription} is converted to CHEST PA/LAT. Without quotes around that, PRDR would think there were two command line arguments: "CHEST" and "PA/LAT". The quotes make it look like "CHEST PA/LAT", which PRDR knows as one piece of information.

Wake up! Am I boring you with the details? You probably have that same glazed over look my wife gives me when I give her too many details about programs I am writing... OK, so Emageon PACS is giving PRDR a bunch of exam information. Make sure you always make your OS action look just like it shows in the example. The only thing you will need to change is the first argument "ED". To make more forms, you would replace the "ED" with something else, like "Prelim" or "TechQC" and then you would have a corresponding section in your PRDR.INI file for that new form type. More on PRDR.INI later...

I'm going to skip some of the advanced stuff for later, there's just too much in there, but I'll give you this tid bit: You can add up to five more tag descriptors after the last one, {UserID}, and pull that information into various locations in your report on the fly! You could use this to pull in Tech initials, exposure values, etc., and put that information in your reports, too. Sweet!

The PRDR.INI file is where all the customization of the forms takes place. Every page title, user title, drop down box description, and text box can be modified. You can have up to three drop downs, three static single-line text entry fields and a scrolling text entry box to collect data in. PRDR.INI holds the keys to which fields are displayed, whether these form fields are required by the end user to fill out and also where all this information goes after it is submitted (printers, pagers, & e-mail). Let's look at the PRDR.INI file used in the above example:

By the way, don't let me catch you editing your PRDR.INI file in Windows Notepad! Go downloadNotePad++ and enjoy the nice line numbers, coloring and text formatting that will make you life much easier!

Line 1 shows the same "ED" we used in the AV macro. When you make your own custom reports, choose a short, descriptive name with no spaces in it for the macro. Then add "Report-" to that name for your PRDR.INI section.

Lines 2-4 are what make the address at the top of the report.

Lines 6-9 specify the titles:

Line 6 is the main page title

Line 7 is an explanation on the report of what it's all about

Line 8 is a description of the user who submitted the report (if this was a TechQC report, you would have something like "Tech Supervisor")

Line 9 is the name for the doctor. In this case, line 9 says "ED Physician" because this type of report would only be generated for ED doctors. For other types of reports this might just read "Physician". You can also specify "NONE" for line 9 - TitleReferringPhysician. This would eliminate this information from the report altogether because sometimes the referring physician isn't relevant to the report (like for a TechQC report).

Lines 11-13 decide what the drop down menu is like:

Line 11 is the title for the drop down.

Line 12 are the choices that appear in the drop down separated by the "|" symbol. That's SHIFT+ \ on my keyboard, also referred to as a "pipe" symbol.

Line 13 decides if the user must select something from the drop down before the form can be submitted.

Lines 15 & 16 are similar to the drop down lines above. They set the title for the main text entry window and specify if the user has to type something in that field before they can submit the form.

Line 18 is set to the name of the printer that the report should go to. It's the name as it shows up in the Printers Control Panel in Windows. For now I am going to tell you that the printer must be installed on the PC that is running the report. It can be a network printer or a local printer, it doesn't matter. (I say "for now" because PRDR has a client/server mode that uses the printers on the server computer instead, but we will discuss that later.)

Line 19 is a footer for the bottom of the page. In this report, we use it as a sign off section for what time the report was given to the ED physician and to get his/her signature.

Create New Reports

Open PRDR.INI in Notepad++.

Copy the entire Report-ED section and paste it at the end of the file.

Rename the section with whatever new kind of report you want, like PPR (PACS Problem Report):

Modify the various entries to suit the needs of your new report ans save the changes.

Then go make another macro in PACS (remember to change the first command line argument to PPR or whatever your report was).

Add another entry in the Right click menu for it and you're ready to go.

You can download an additional INI file at the bottom of this page that has a bunch of example report types I use at my own facility.

Customizing

The PRDR.zip file contains a sample PRDR.INI file. I have listed the INI's contents below. All the entries have explanations in green as to what their purpose it. The text wrapping seen below can be a little confusing for the long entries like EmailMessage - remember that is actually a single line of text.

PRDR.INI example

[Common]

;This is the address of your SMTP e-mail server. By default, PRDR assumes you have non-authenticated, relay access to the SMTP server. You may need to get IT to make an acception for your PRDR PC to use relay SMTP. PRDR does support authenticated SMTP, too. Contact me on how to do that.

SMTPserver=smtp.mysite.edu

[UserNameMapping]

;Use this section if you want to transform someone's PACS username to another name on the output reports and PRDR logs. Note:You probably don't need this.

Administrator=Ima A Dmin

[UserEmailMapping]

;add PACS Username to e-mail address mappings here.

Administrator=Ima.Admin@somewhere.com

;You can have multiple Report types. Start each section with [Report- and then the name of your report type(no spaces) and an end ]

;Use this same report type name in the Emageon macro

[Report-SAMPLE]

InstitutionName=Somewhere Hospital

InstitutionAddress1=123 Banner Street

InstitutionAddress2=AnyTown, CA 12345

;This is the main title of the report. This is also used to name the logfile (the spaces are stripped out first).

;The Title is used for the log file name so that you can have different report tye sections in your INI that all log to the same log file (assuming they all have the same TitleMain).

TitleMain=Preliminary Interpretation Discrepancy Report

;TitlePrompt is the descriptive text that tells the end user what the form is for and that appears on the printed output. It is also available as text in the e-mail & pager messages.

TitlePrompt=

;Use TitlePACSUser to change the title that the PACS User is referred to. For Radiologist generated reports you might set it to "Radiologist", for Tech QC reports, it might be "Tech:"

TitlePACSUser=Attending Radiologist:

;TitleReferringPhysician can be set to NONE and it won't show up on the report. Use this if the ordering physician is not relevant to the reported data.

TitleReferringPhysician=Ordering Physician:

;There are three available dropdown menus, use any or all of them. Specify NONE to not display a DropDown

;Separate Menu choices options with a | character

;Decide if the drop down is required or not

;Only Drop Down Menu #1 has a resize option, it can either be SMALL, MEDIUM, or LARGE. MEDIUM will remove the Freetext1 from being displayed, and LARGE will remove DropDown2 & FreeText1.

;You can specify a default option from the choices by putting an * in front of the choice, like this: YES|*NO|MAYBE

;You can also put the text <MRU> in front of the line of choices (MRU=Most Recently used) so that PRDR will remember what choice the user picked last and use it the next time the form is displayed. (See example DropDown2 below)

;MRUs are PACS user specific, e.g., next user that logs into PACS won't receive the last user's MRU.

;FreeText Labels are a one line text entry to allow a user to type anything they want. Specify NONE to not display this field.

;You can pre-populate the text in a FreeText field with the FreeText= command. Leave it blank to, you guessed it, leave it blank!

;FreeTextShowOnReport decides if the free text data will show up on the printed output (if you choose to have PRDR print the reports)

FreeTextLabel1=NONE

FreeText1=

FreeTextRequired1=FALSE

FreeTextShowOnReport1=FALSE

;TextBox is a scrolling, multi-line text entry box. Use TextBox= to pre-populate the text box with information. Decide whether TextBox is required or not (TextBoxDataRequired=TRUE or FALSE)

TextBoxLabel=Comments/Describe Discrepancy:

TextBox=

TextBoxDataRequired=FALSE

DropDown3Label=Was Ordering Physician notified of revised reading?

DropDown3Choices=Yes|*No

DropDown3Required=TRUE

FreeTextLabel2=Date/Time Notified:

FreeText2=

FreeTextRequired2=FALSE

FreeTextShowOnReport2=FALSE

FreeTextLabel3=Name of Physician/Caregiver Notified:

FreeText3=

FreeTextRequired3=FALSE

FreeTextShowOnReport3=FALSE

;SEND Button name

SendButtonText=Report Complete

;The E-mail address to send the report to. Specify NONE for no e-mail, a single e-mail address, or multiple addresses separated with a comma.

;You can either type static e-mail address(es) or use tag descriptors to pull in e-mail addresses from dropdowns, freetext entry, or {PacsUserEmail} - see below for PacsUserEmail explanation.

;You can add logic to decide if an e-mail should be sent by adding a stipulation statement surrounded with paranthesis in fron tof the e-mail. If the stipulation is true the e-mail will be sent to that user.

;Stipulation example: (Disagree/{DropDown1})LeadTech@hospital.com If the word "Disagree" is found in anywhere in the choice the user makes from DropDown1 then an e-mail will be set to that user.

;The SMTPFromAddress can either be a static address that all e-mail will appear to come from, it can be pulled from dropdowns/freetext entry, or it can be set to {PacsUserEmail}

; Username email mappings will use the[UserEmailMapping] section to match an e-mail address to the logged in PACS user.

;SMTPAdditionalCommandLineOptions is for unique situations where a site's SMTP server might require authentication, troubleshooting, etc. Typically, you should leave this blank..

;Set SMTPAdditionalCommandLineOptions to -debug or -superdebug and a separate log file will be generated with details about the e-mail communication. use this for troubleshooting only.

; SMTPAdditionalCommandLineOptions can also be used in instances where you might need to provide credentials to log onto an SMTP server that does not support relaying. Contact me for details on this.

;This is for AlphaNumeric paging. Page Recipient is the e-mail address of the user's pager, like 5554443333@myairmail.net .

;You also have to add a line to the [COMMON] section listing the paging service's SNPP hostname and port number. Like this: myairmail.net=snpp.myairmail.net 444

;You can have multiple page destinations by separating the pagers with the | character.

PageRecipient=NONE

PageMessage=

;Printer needs to be either NONE, SELECT, DEFAULT, or the actual name of the printer as it is displayed in Control Panel - Printers.

;NONE = no printed report output

;SELECT = a dialog box will pop up askling what printer to print to (never use this in PRDR client/server mode)

;DEFAULT = uses the default printer on the PC (in Local PRDR mode it is obviously the local PC's printer, in client.server PRDR mode, it is the server's default printer)

;CoverPage = anything other than NONE will cause a coverpage to print before the final printed page. This is useful for announcing instructions for the user near the network printer that gets this report.

Printer=NONE

CoverPageText=NONE

Footer=Report ID#{SerialID}-{RandomID}

;DontShowForm will decide if the form should be displayed or not. Not displaying a form is useful for just reporting data that doesn't need any user intervention.

;If you set this to TRUE, be sure to NOT to have and data fields be required, e.g., settings must be FreeTextRequired3=FALSE

DontShowForm=FALSE

;Log Frequency can either be YEAR, MONTH, or DAY

LogFrequency=MONTH

Client/Server Mode

If you are going to deploy PRDR to multiple computers client/server mode is the best way to go because:

Only one PRDR.INI file to maintain

Make changes to the INI file on the fly without restarting the PRDR server

Log files are centralized on the server

Centralized destination printers

Server Requirements

Although I have successfully tested PRDR running as a background service, I'm not ready to release that as a feature (if you are adventurous, test it out yourself using srvany.exe). So for now you need to use a PC that can remain logged in so that PRDR can run in the background (you can have the desktop locked up after PRDR is running).

Any Windows 2000 or higher PC will do, PRDR server has minimal system requirements.

Needs to have a static IP address so the client computers can access it.

Setup PRDR server

On the server PC, install the PRDR files as normal, create a shortcut to the PRDR.exe file and put this in the Startup folder. Edit the properties of this shortcut and add " SERVER" to the end of the Target line like this:

Double click on the shortcut to run it. Now PRDR is running in server mode (you can verify this by looking for the PRDR icon in the system tray.

Install all the printers (local and network) that you want PRDR to be able to send reports to on this server and modify the PRDR.INI file to use the names of these printers.

Setup PRDR clients

The PRDR clients (Emageon workstations PCs) will request report form layouts from the PRDR server so there is no need to have a PRDR.INI file on the client computers - go ahead and delete it. Actually, the only file you need on the client computers is the PRDR.EXE file.

You need to change the Emageon macro(s) to be in client/server mode, too. Just add a "|" symbol and IP address of the PRDR server to the end of the first argument in the OS action. Like this: C:\PACSMATT\PRDR\PRDR.exe "Discrepancies|10.90.10.90" "{StudyDate}" .....

PRDR looks for this server info in this first argument. If you want to specify a primary and backup PRDR server the statement would look like this: C:\PACSMATT\PRDR\PRDR.exe "PIDagree|10.90.10.90|10.90.10.91" "{StudyDate}" .....

That's it! Try running the macro from the client computer,

Notes

SNPP stands for Simple Network Paging Protocol. It usually runs on port 444 and is a better method to deliver pages to alphanumeric pagers (that support SNPP) than using e-mail. You can find most paging services' SNPP server info by doing a Google search for SNPP and the domain of your pager's e-mail address, like this: If your alphapager's e-mail was 123456@myairmail.com, do a Google search for SNPP myairmail.com. You'll find the SNPP information for that e-mail is smpp.myairmail.com, port 444. You need to add this SNPP information to the [Common] section of your PRDR.INI file for each different SNPP pager domain you have (most institutions will only have one). In this example we would have the following line in our [Common] section: myairmail.com=snpp.myairmail.com 444

You can test out your PRDR's SMTP e-mail capabilities with your site's SMTP server by running PRDR.EXE with a command line argument of " SMTPTEST". This will bring up a SMTP wizard like GUI asking you for various bits of information and in the end PRDR will try to send you an e-nail using the information you gave it.

Despite what I may have said in the past, PACS macros will inherit. So you can deploy PRDR macros by creating the macros in the account that your users inherits from. Then you only have one place to setup the macros. Also make sure you are setting up the method to launch the macros with from the inherited accounts as well. Don't micro-manage your PACS users accounts - use the inherited accounts as much as possible!

License

You are free to use PRDR on any number of workstations you want as long as you agree to the following:

Only use PRDR if you understand that you are taking full responsibility for how it works (or doesn't work) in your PACS environment. I have no control over how you may attempt to use it or how your site is configured.

Thoroughly evaluate whether PRDR does what you want before you put it to use.

If you need a version of PRDR for which you can blame problems or bugs on, then you will need to contact me about programming a special version of PRDR for you that includes blame and responsibility features as this version of PRDR does not contain either. Blame and responsibility are costly, so in order for me to write a version like that you will need to compensate me for my programming work through either an agreed upon sum of money or yummy snacks.