Sign in to follow this  
Followers 0
pogonip

Citrix/Epic EMR

3 posts in this topic

Hello, I'm not very experienced with coding, but I'm giving this a shot.

This is the situation:

I'm in the medical field and I'm trying to streamline our hospital's workflow a little bit for the physicians. We use Epic EMR in a citrix environment. We also use a different radiology workflow application (not Citrix-based) that is needed to specify a particular imaging scan order. Currently, our physicians must constantly switch from the radiology workflow app to Epic to look up certain patient information before specifying the correct imaging order in the workflow app. It is rather time-consuming.

I'm trying to develop an autoit script that will grab information from Epic EMR without having to manually click through a bunch of windows.

So far, I have been able to grab the medical record number (MRN) from the workflow app, activate the Citrix/Epic EMR window, input the patient's MRN and open the patient's chart.

I'm stuck after this part - basically I need to somehow grab data from the Citrix/Epic EMR window.

AFAIK WinGetText will not work.

I have read on previous threads that this is difficult/impossible because Citrix is a virtual environment, but those were pretty old threads. Has there been any other development since then or any other ideas out there?

Thanks in advance!

The following is a bit of code that may/may not give you an idea of what I have. It might be pretty ratty-looking, but I'm not going for pretty here, just effective.

Func SYNCEPIC()
$TEXT = WinGetText("Syngo")
If $TEXT <> "" Then
  $ACC = _STRINGBETWEEN($TEXT, "Name:", "MRN:")
  If $ACC <> "" Then
   $COMMRN = $ACC[0]
   $COMMRN = StringStripWS($ACC[0], 8)
   While StringLeft($COMMRN, 1) == 0
    $LENGTH = StringLen($COMMRN)
    $NEWLENGTH = $LENGTH - 1
    $TEST = StringLeft($COMMRN, 1)
    $COMMRN = StringRight($COMMRN, $NEWLENGTH)
   WEnd
   $MRNLONG = $COMMRN
   $ACCPASTE = $MRNLONG
   ClipPut($ACCPASTE)
  EndIf
EndIf
$WIN = WinActivate("Hyperspace")
   If $WIN <> 0 Then
    Sleep(10)
    Sleep(100)
    Send("^w")
    Sleep(100)
    Send("^2")
    Send("^v")
    Send("{ENTER}")
    Send("{ENTER}")
   EndIf
EndFunc

Share this post


Link to post
Share on other sites



If you can navigate your EPIC windows by tabbing (press the tab), the field's content is highlighted and ready for a copy command. You then send what you copied to an array for example.

Another alternative is to resize your EPIC window and send mouse clicks to the correct buttons (I assume the commands have no ID like in most HMRs).

Share this post


Link to post
Share on other sites

Citrix is a bit of a black box to Autoit.

If you can convince your sysadmins to allow the Epic thick client to run directly on the workstation unstead of through Citrix, then you will be able to do more with the Epic window. However.... good luck with that. It creates more work on their end during the frequent updates that Epic sends out. Much easier for IT to just update in 1 place rather than on a bunch of workstations.

Another alternative might be to run your autoit script on the (?virtual) machine where Epic is running, and then passing the data to your local workstation, for example through a shared directory structure or database that both have access to.

Otherwise you are stuck with JailDoctor's good comments.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0