Taking a “break”

I’ve been unable to post consistently for some time and, with some new projects on the horizon, it’s unlikely I will be able to reverse that trend. As such, I’m going to openly acknowledge that the blog is in a state of indefinite suspension.

The main things going on are that I’m going to head up a podcast for the Society of Imaging Informatics in Medicine (SIIM) and I’m consulting part-time with IBM (helping pivot Watson towards medicine). No, I don’t have any podcast experience (or experience with content generation, really, except this blog). So there’s going to be a learning curve and it’ll occupy a lot of time, at least at first.

Moreover, I’ve got my first kid coming in May, and people seem to indicate that I might want to plan for my life to change a little or something… I dunno.

So, rather than feel guilty about not posting, I’d rather table the effort for now. See ya some sunny day.

Taking a “break”

The smart radiology department part 1: overview of smart home technology

The topic of smart home devices and home automation – in the home – itself merits a whole book. Indeed, numerous books cover this topic, including a “for Dummies” book and one (affiliate link) that I can’t quite recommend but did get a lot from.* Another solid overview is provided by the /r/homeautomation subreddit wiki.

screenshot_2017-01-06-16-38-26
House control home page on my cell phone. Security cams blurred for security.

But we can’t quite jump straight to the topic of smart devices in the hospital, radiology department, and reading room unless we have a bit of background on the sorts of devices available and the ways they work together.

So our focus in this post will be a hopefully brief overview of the landscape and a discussion of my experience installing such a setup at my home in the 2nd half of 2o16.

June of last year, I was fortunate enough to move into my very first home. My wife and I each allotted ourselves a “toy budget”. I’d always been intrigued by the idea of a smart home. Our house was new construction, and only a couple months earlier I had done some research into strategies for preparing the walls and wiring of the house for a future smart-house project.

I discovered quickly that the kinds of planning and “in-the-wall” pre-installation that may have been required in the past are no longer necessary: today’s smart homes are largely wireless, operating through a number of recent standards.These include WiFi, but also dedicated smart wireless communications standards such as Z-wave and ZigBee. Many products (usually hubs or home assistants) also have the ability to use Bluetooth, but it’s of tertiary or lesser importance compared to these others.

Image result for zigbee z-wave wifi bluetooth

The general classes of devices (in green are technologies I am currently using at home and starred are products I’m specifically using; again these are Amazon affiliate links and note is made that prices are pretty bad right now):

screenshot_2017-01-06-16-36-14
House controls through the SmartThings hub app

So, I’m fairly invested. Part of the justification (to the wife) was that we didn’t go with a dedicated home-security system, so a component of my security strategy involves smart sensors and cameras. The system costs were a bit high in 2016, but already have been falling precipitously. This was particularly true around Black Friday, when I could have gotten many parts of my current system for 33% less. Still, an apples to apples comparison notes that any Z-wave enabled device costs a good bit more, so while my non-smart outdoor motion lights cost about $14 each, my smart indoor motion sensors cost about $22 each. Note: in creating those links, I note that the Black Friday prices are gone and they’re back to normal. Keep an eye on Amazon and you’ll see the prices fluctuate by as much as 25%. Another good site is The Smartest House, where deals are frequent.

My current position on the technology is that it is a bit expensive and definitely a luxury at the moment. My wife has grown to appreciate some components of it, but it’s really not that important to be able to control the lights from your phone or with your voice instead of standing up and walking over to the wall switch. Still, there are corner cases where it is very useful (the lights switch in the basement is across the way, so it’s nice that a motion sensor turns on the lights as you come down the stairs) and there are components that are clearly worth it. Most importantly, I think smart home stuff is clearly the way of the future. It’s a luxury and expensive today, but in a few years it’s going to be very standard. So that expense really is just the “early adopter” price, though it’s honestly not that pricey or early compared to that paid by smarthome-ers of the decade(s) past.

My recommendation for anybody who wants to get started is to grab a hub, home assistant, a couple switches/outlets, maybe a thermostat (often largely or entirely rebated by your electric/gas company), and a smart deadbolt. Those are the highest yield, probably, surprisingly, with the smart deadbolt at the top. It’s just really nice to not have to think about carrying keys when you leave the house for a run or to do work around the house. Plus it automatically locks after 30 seconds, so you never worry about it being left unlocked (and even then, you could always check on your hub’s app).

If there are any questions about specific products, feel free to email me or post a question in the comments. Of course, there’s tons of literature on the internet about all of it, but I’m happy to provide my take.

In the following posts, we’ll explore how these devices can be used in the radiology reading room, the radiology department, and the hospital as a whole.

*The writer of this book is a bit of a douche, but I think he’s right on about his approach to the smart home and the prose is mostly straight-forward and concise.

The smart radiology department part 1: overview of smart home technology

Next series: home automation applied to healthcare

Well, it’s been just over 3 months since the last post. Our first major hiatus (actually, I guess I posted a 1-off last week).

The main reason the blog fell by the wayside is that I really want to talk about smart-home/home automation and possible applications in the reading room, radiology department, and hospital as a whole, but part of me also has wanted to try to create a business and somehow monetize it.

But for a variety of reasons, that hasn’t happened:

  1. I’ve never started a business and have no idea how to do it.
  2. I’ve seen friends and family get involved in businesses and startups and it sort of consumes them. Not by any fault of theirs, but businesses are invariably a race to market. I don’t know if I want to get in that game; life is good right now.
  3. The value proposition is kinda murky. Like, what exactly would this business look like?

I suppose it’s still possible I’ll pursue that, but for now I just want to get back into writing (there’s also a chance I’ll start hosting a podcast for another site, but that’s a whole separate matter).

So I think we’ll start a new series exploring the home automation devices I’ve brought into my new home (some 42 devices) and the experience I’ve had there. We’ll talk about possible applications in the healthcare setting, possibly even trying them out and reviewing them. And hell, maybe I’ll use affiliate links to justify the capitulation of actual monetization.

Next series: home automation applied to healthcare

Loneliness, the overnight radiologist, and a CB radio channel

I’m just finishing my first year as an overnight/nighthawk radiologist. It’s been everything I wanted it to be and I anticipate doing it perhaps for my entire career.

Although the sleep issue prevents many from pursuing such a career, I was surprised early on that an equally difficult thing for me was the loneliness associated with the gig.night-shift-worker.jpgThere are definitely perks that come with with solitude. I listen to my music or watch video without concern for others in the reading room. I can wear what I want (I really don’t see anyone most nights). I can read cases at my own pace (unless slammed) and take breaks as needed.

But sometimes it’s 3am and there’s no one to talk to and you’re just staring at the clock thinking you’ve got 4 more hours to go.

I tried a few strategies over the year, all of which help.

  1. Music helps, of course. Interestingly, after many years of only being able to work with instrumental music, I grew able to listen to music with words. I think it’s a combination of feeling a bit more connected with lyrics and also that with more experience (at your work) you are better able to handle distractions.
  2. Visits to the ED, where at the least there’s always an ED doc to talk to. Sometimes I’d just walk the floors, both to get in some steps and to see other people (though to be fair there’s only one or two nurses I’ve really chatted with).
  3. After a trip to Japan, I realized that it’s daytime there during my shifts, so sometimes I would put on my side computer a webcam trained on a major intersection in Tokyo, Shibuya.df
  4. I also noticed at some point that if you Tweet at night, sometimes radiologists in Australia would tweet back. Haven’t been able to get many conversations going, unfortunately.
  5. Sometimes I’d call up residents who I knew were on call at my old residency (recently graduated). But with a new class in July, I’m a bit too removed to know the people taking call now.
  6. The most recent iteration of seeking connected-ness has been having video game streamers on my side computer. There are a couple big video game streaming websites (Twitch, Youtube) where you can watch highly skilled people playing pretty much any popular video game in real-time and chatting with their viewers. The latter part is especially helpful for mitigating loneliness: suddenly you’re one of hundreds or a couple thousand people all sharing a real-time experience and you can easily interact with these people (other viewers or the streamer him/herself). It’s become my go-to. It’s also a nice way to revisit the games and levels of my past with as little commitment/attention required as possible (the radiology case still demands you are 100% present, after all).Capture.PNG

I guess the long story short is that I don’t really experience the loneliness much anymore.

But another idea recently crossed my mind. I’ve always thought it would be really nice if there was a radiology-specific chat application. One that night radiologists could use – either to mitigate loneliness or to get consults if needed. Something like a CB radio for radiologists instead of truckers.

The problem is that it’s hard to argue for a new software to reproduce functionality that is already widely available. One popular platform these days is Slack.

So I pose my question: anybody interested in a Slack channel just for us overnight guys?

trucker-2

Loneliness, the overnight radiologist, and a CB radio channel

The next killer app: always-listening voice assistants

Voice recognition has come a long ways since my dad first purchased Dragon NaturallySpeaking to avoid learning how to type back in 1999. Back then, it could hardly understand me, let alone someone with his accent.

Image result for naturally speaking 4
lol that 90’s branding

By a few years ago, voice recognition had matured immensely. When I started radiology residency in 2010, it was clear professional voice recognition was already the past, present and future of the field. My Blackberry at the time had some voice-to-text SMS products, but they weren’t quite there.

Within a couple years, the same quality extended to consumer-grade products, and when Google Now was released in 2012-ish, it was pretty much game over. Google Now was – and remains – an amazing product.

It just hasn’t really changed in two years. In the four years since Google Now came out, the product developed nicely at first and has basically stalled since.

A couple years ago, something else happened that surprised everyone: Amazon Echo was released with its voice assistant, Alexa.

Alexa, paired with the coming-of-age of home automation and smart home products, has ushered in a new era for voice automation. Yesterday, I was taking a shower listening to music on my Bluetooth speakers thinking it was too quiet. With my Echo, I’ve gotten used to shouting “Alexa! Volume 7!”. How annoyed I get when I actually have to press a button to turn on my voice assistant or – gasp! – manually change the volume myself.Image result for amazon echo

I gave my mom an Amazon Tap a couple weeks ago because she requested a Bluetooth speaker and it was on sale on Prime Day…. I’m realizing what a mistake that was. This device is basically identical to the Echo in functionality except it’s portable, so it’s battery-powered, so instead of always listening you have to press a button to instruct it. I finally got around to explaining it to her this week and realized how useless that is.

Always-listening voice assistants are, to me, the clear path to the future. Whether you’re showering or cutting vegetables or sitting at the radiology workstation, the ability to stay focused on what you’re doing (or not having to dry off) and still change the volume, launch a Google search, turn on the lights, or ask whether it will rain tomorrow is an order of magnitude easier than the alternative.

Of course, there are two big costs:

  1. The device generally has to be powered rather than battery-run as always-on is power-intensive
  2. Privacy concerns. Remember the hubbub over Samsung TV’s listening in all the time and sending marketing info off to third parties (not sure if alleged or confirmed)?

Anyways, I firmly believe this is the next big thing, the “killer app” that will make home assistants, home automation, and perhaps ultimately robots commonplace.

Image result for her
2013 film Her

All that said, Google plans to release Google Home this year. Although they’ve done nothing with Google Now for years and really screwed up Nest, I’m looking forward to welcoming them into my smart home and seeing what they can do. Because there’s still a hell of a lot Echo can’t (or won’t), like voice to SMS (my damned 2010 Blackberry could!). We’ll save that for another post.

Afterthought: Siri.

The next killer app: always-listening voice assistants

Rain barrel engineering

I had a fun engineering/problem solving thing today (background at the top of this post; skip down to the ****** for the fun/nerdy part).

It starts with my rain barrel, a device that collects water run-off during storms for use during drier times. It also reduces the strain on the city sewer system, cuts flood risk and is considered a green thing to do.

20160621_133908

The problem showed up the first time I actually filled up the barrel: the thing collapsed and completely lost its form and made the faucet inaccessible. Note that these things usually come with metal cages to prevent deformation, but not these ones that my Craigslist seller had gotten for free from a suburban township near Chicago (for the reasons outlined above, suburbs often subsidize or give away rain barrels).

20160803_193333

Now, a half full 275-gallon tank holds 137.5 gallons, which wolfram alpha tells us weighs 1147.5 pounds. Way too much for me to move to access the faucet. So I’m kinda stuck and can’t do too much with the thing right now. So…

Primary objective: get the water out of the barrel

Secondary objective: not empty the water by the foundation of the house, and thus invite flooding

Tertiary objective: water the grass

Now, usually you just attach a hose to the barrel and then passively water the lawn/garden, making use of the height gradient to provide pressure. There’s usually not enough pressure for a sprinkler, but just hose watering.

************************

So the solution seems to be an immersible pump. Only problem, the pump I picked up was slightly too big to place fit in the rain barrel opening (see that red cap?). I almost gave up for the day there, but I really wanted to get this out of the way. So then I tried siphoning water from the barrel to the lawn, but given the length of hose (ie. increased resistance) and the lack of a real height gradient, that didn’t work.

Finally, I managed to figure out a way to siphon the water to a bucket just outside the barrel (not easy, but once it’s going, it’s going). While the bucket was filling, I had a few seconds to turn on the pump sitting within it.

Impressed with the pressure coming out of the second hose, I went ahead and attached the sprinkler.20160803_193526

Victory!

But this is where the fun really started. In this system, there was a certain rate X at which water would passively siphon from the barrel to the bucket. And there was another rate Y at which water would be pumped from the bucket to the lawn. So there was a difference X-Y and there was no way of knowing whether that would be positive or negative and by how much.

If X>>Y, then I would have to continually stop the siphon, wait for the pump to empty the bucket, and re-start the siphon, which just wouldn’t work with 140 gallons and a 5-gallon bucket.

If X<<Y, we’d have a similar problem.

A steady state was critical. Luckily, X was only about 1.2*Y. So the bucket would fill after 7-8 minutes and I could just reset it a few times.

BUT, the barrel water height is dynamic! So as the water drained, there was less of a pressure gradient and X would fall (the hose mouth was positioned at the bottom of the barrel to maximize the pressure). At some point, X would be less than Y.

So in order to account for this, I had to dig out several levels with the rocks, above and below ground level. So basically at the start, I placed the bucket at +2, then ten minutes later moved it to +1, then 0, then -1, and finally -2.

So all three objectives were completed and I got a kick out of having to problem solve my way through it. Now I just need to get a pump that actually fits in there and figure out how to unwarp the stupid barrel… and build a higher stand for it and build a cage.

Rain barrel engineering

Automation II – The console

The last bit of the equation for me was moving all the combinations to a convenient location on the keyboard so as to limit the amount my hand has to move and ensure that I don’t need to look over at the keyboard.

Many computer games are designed to be controlled by keeping the left hand in the “home” position, with the index finger on the letter “f”. For first-person shooters, the letters w, a, d, and s typically move forward, left, right, and back. For real-time strategies and MMORPG’s (World of Warcraft), keys in the QWERTY region are used for key shortcuts to spells and attacks.

Typical first-person shooter controls
Starcraft II controls

So if we take a page from gamers, it would make sense to move all of our keyboard shortcuts to same home position.

The first part of this is easy. Many PACS shortcuts (distance, ROI, angle, etc…) are already assigned keys on the left side. Any shortcuts that are not on that side can be moved easily be re-assigning the shortcut in PACS.

The next step is easy if you have been following along. Any combination functions we have created can be moved to the same region. So I put the combo to open a case and generate a report at “`”. As previously discussed, 1, 2, 3, and 4 are used to toggle mic, move back and forward in fill-in fields, and sign reports (or run the replacement functions and then sign, more precisely), respectively. I also moved the windowing functions to F1-F5, which really just call the Numpad-assigned windows, so you can still use those if desired.

After a couple hours, you get quite aquainted with keeping your hand there rather than on the mic. I’ll discuss further in another post, but I never even touch the mic since I can control it from my “console” so easily.

I’d be remiss not to address the most obvious concern here. What happens when I need to type something? Well, the actual letters are PACS shortcuts. So I can type in Powerscribe and have no problem. It does sometimes cause trouble when I try to type a measurement (1.2 cm would turn off the mic and move my cursor to the previous fill-in field) and forget that I can’t use those numbers for that purpose. But after figuring it out, it’s just a matter of fixing the mistake and using the num-pad to type out the measurement… To be honest, with the amount of automation and templates I’ve created (with drop-downs), I hardly free-dictate anymore and free-type even less.


Alright, we’re done with the automation

Automation II – The console

Automation II – Compound functions

Once we have an idea of some of the simple tasks AutoHotkey (AHK) can perform, it is a simple matter to create macros applying those tasks in sequence to automate more complex tasks.

I wanted to make a macro to open a case in PACS and automatically generate a report in Powerscribe (many PACS already have this functionality built in).

`::                                       ; hotkey called using the grave accent (next to tilde ~)

Click 2                                  ; tells mouse to double-click (open case)
Sleep, 200                             ; tells the computer to wait 200 ms while case opens
 
CoordMode, Mouse, Screen      ; tells AHK you want to move mouse
MouseClick, left, 3600, -230    ; moves mouse and clicks (to put PACS in focus)
Send, {Insert}                        ; calls my PACS shortcut for generating a report
Sleep, 2000
WinActivate, PowerScribe 360  ; Tells AHK to make Powerscribe the active window
Send, {F4}                            ; sends the built-in Powersribe function for microphone toggle
Return
Couple notes here. Different PACS and Powerscribe combinations may require additional steps or may not need some of these steps. But any combination should be manageable using the AHK software. My PACS has a function to generate a Powerscribe report and further allows me to map that function to {Insert}. Yours may not allow one or both of these steps. On the other hand, your PACS may automatically generate a PACS report when you double click the study in the worklist, obviating the need for this macro altogether.
Another use for combinations is creating a “single sign-on” where institutions do not already have one in place. This way, when I turn on the computer, once the desktop is active all I have to do is hit ctrl-` and it will log me into the PACS, Powerscribe, and EMR.
I made a similar macro for my home computer, too, since there are extra steps of logging into the VPN before opening all the other software. I’ve included a portion of it as an example:
^`::
Run, C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe
Run, C:\Users\arj\Desktop\Nuance.PowerScribe360.application
Run, C:\Program Files (x86)\Agfa\IMPAX Client\AppStart.exe
Winwait, Cisco AnyConnect Secure Mobility Client
Sleep, 1000
Send, {tab}
Sleep, 500
Send, {tab}
Sleep, 500
Send, {space}
Sleep, 500
Send, ***********                 ; password starred out
Sleep, 1000
Send, {tab}
Sleep, 500
Send, {space}
Return
You’ll note that there are lots of “sleeps” in a sign-on macro, and that’s because you have to wait for things to happen after logins. And in this case because the VPN software is snarky when you tab between fields.
In truth, there are hundreds of AHK functions I have yet to explore. The limiting factor really isn’t knowledge of the functions and abilities – pretty much anything is possible. The hard part is recognizing the things you are doing that could be automated. And I guess the fun part is problem-solving how to do that.
Automation II – Compound functions

Automation II – Global Hotkeys

Ahh, global hotkeys. This is my favorite workflow pro-tip.

If you decide to try AutoHotkey for one thing alone, make it global hotkeys.

The idea here is to assign tasks to keyboard shortcuts but have those tasks be agnostic to the active application. Simply, this lets you do stuff in one application even if another application is currently in focus (active) without manually switching over to that first application.

In other words, no alt-tabbing, no moving the mouse to the other application and clicking it, no moving the mouse to the taskbar and clicking it.

On my workstation, the imaging computer only has Powerscribe and our PACS (Agfa) – there is no browser or other software. So for our purposes here, we’ll parse the global shortcuts into those for Powerscribe and those for PACS. Note that you could make shortcuts to interact with the computer (a la Win-D to minimize all), but that’s outside our scope.

Ah yes, the great airline hubs of Saskatchewan, Tegucigalpa, Honduras, & the Sahara

PACS:

Global windowing – Pretty much all PACS allow you to change the window settings for a CT (lungs, bones, soft tissue, liver, etc…) with keyboard shortcuts. In the PACS I’ve seen, this is usually done through the NUM-pad. If your PACS does not allow customizable shortcuts, you can use AHK to re-map those keys to your liking. But let’s say your PACS does allow it, like most. AHK will let you change the window even when the Powerscribe window is active. So you’ve just typed something into Powerscribe and you’re still looking at the images and want to switch to that liver window. With AHK, you can use a single key-click to change the window regardless of whether your PACS screen is active.

F2::                                            ; sets the shortcut key to F2
CoordMode, Mouse, Screen   ; tells AHK you want to move the mouse
MouseMove, 3600, 500          ; tells AHK to move the mouse to location x= = 3600, y=500
Send, {Numpad1}                   ; tells AHK to send the PACS shortcut, numpad-1, soft tissue
Return

A couple notes here. I have remapped to F2 because I want the windowing shortcuts close to the home position for my left hand (the console, to be discussed later). You will need to play around a little to figure out where your mouse cursor should go. In my PACS, I only have to move the cursor over the application in order to interact with it, so I just have it move over the screen and hover. Your PACS might require you to click it in order for it to become active. In this case, I would choose a location on the PACS screen that is non-interactive (ie. clicking it won’t activate the manual windowing mode or open a context menu or something) and instead of use line 2 use the line:

MouseClick, left, 3600, 500

For PACS, I’m afraid that’s all I have right now. I probably should add some more, perhaps for annotating tools and such. I definitely want to make one that automatically closes studies using ctrl-F4, like closing tabs in a browser. That would be a pretty similar function as that given above.

Powerscribe:

Global navigation – Powerscribe allows you to navigate forward and backward through fill-in fields using tab and shift-tab (as all modern software does). Of course, if you’ve been interacting with your PACS, it requires you to alt-tab over or move the mouse over to Powerscribe and click to tell PS that you want to interact with it.

2::                                                        ; assigns the shortcut to 2 atop of the keyboard
WinActivate, PowerScribe 360       ; tells AHK to put Powerscribe in focus
Send, +{tab}                                     ; sends shift-tab
Return
3:                                                       ; assigns the shortcut to 2 atop of the keyboard
WinActivate, PowerScribe 360
Send, {tab}                                       ; sends tab
Return

Okay, easy enough. You might wonder why we don’t use this powerful tool, WinActivate, to access the PACS in the earlier shortcuts, rather than the more error-prone mouse moves. My PACS has an unusual integration into the operating system, such that I can’t just write WinActivate, Agfa Impax and have it work (there are also three windows to the PACS, so it wouldn’t know which one to make active).

Global mic switch – Since PowerScribe already has a function for turning on and off the microphone, we can easily access that:

1::
WinActivate, PowerScribe 360
Send, {F4}
Return

Global sign report – And since PS also has a function for signing the report:

4::
WinActivate, PowerScribe 360
Send, {F12}
Return

I basically use 1 (mic on/off), 2 (previous field), 3 (next field) and 4 (sign report) on every case.

Savvy PS users will note that the microphone usually already all four of these functions built-in globally. The idea here is to move to a workflow where you’re never touching the microphone (and, in a related note, never taking your eyes off the images).

These modifications allow you to keep your hand in one place on the keyboard and pay no attention to which piece of software is currently in focus.

Automation II – Global Hotkeys

Automation II – Autohotkey replace

Probably the most basic function in  Autohotkey is the passive replace function. By creating a script:

::btw:: by the way

you generate a script that will watch out for anytime you type “btw” and will automatically replace that string with the text “by the way”.

This is one of the first functions a person learns when first using AHK. Unfortunately, it’s pretty useless for radiologists. This is because most of us dictate our text. We don’t really speak abbreviations like “btw”. And, moreover, AHK cannot recognize text inputted by a microphone (and then translated by voice-dictation software). So even if we did want to be able to say “adrenals” and  always have it replaced with “Adrenal Glands:”, you couldn’t do that. Fortunately, we can use report templates and macros to obsolete that issue.

INSIDE ELON MUSK'S NEW ATOMIC CAT
source: xkcd.com

However, a trivial step up in complexity allows the generation of “called” replace functions,which I have found quite helpful.

The idea here is that, rather than having a script running in the background and replacing text whenever it sees it, we are generating a script that will run a replace task when we call for it. I use this for two purposes, one which is fairly trivial and another I find useful enough to use in every report.

The more trivial allows me to replace the junk that Powerscribe automatically imports from referring clinicians as the “history” or “indication” and changes it something to more professional and, perhaps, billable. So, for example:

#s::
Send ^h                 #note that ctrl-h is the global shortcut for “replace”
Sleep, 100
Send SOB
Send {tab}
Send Shortness of Breath
Send {tab} {tab} {tab}
Send {Enter}{Enter}{Escape}{Tab}
Return
allows me to press Windows-S and it will replace the “History: SOB” that is automatically generated from merge fields in Powerscribe with “History: Shortness of Breath”. There was an article recently that pointed out that patients might not like it when they misinterpret the report to indicate they are sons of bitches. I’ve also made called functions for CP –:> chest pain and AMS –> altered mental status. One might ask why not simply have the spell-check that runs at the end of every signed report do this replacement for you. For some reason, the spellcheck function doesn’t check merge fields. Again, fairly trivial but it’s really easy to just hit two keystrokes and instantly get the added level of professionalism.
Now, one might ask: why not just create a series of search functions that run sequentially when called and replace SOB/CP/AMS and any number of other things automatically, whether or not they are there? The reason is that although each replace function is near-instantaneous, the time they take is nonzero and adds up. So if you were to run 10 in a row, you’d be waiting an extra few seconds each time you call it and we can’t have that.
The big payoff
But.. I like the idea, and I think a person could afford to have maybe 3 sequential searches at the end of every report if they ran a very helpful set of replacements.
So I run three replaces (put on your reading glasses):  ”  ” –> ” “, ” .” –> “.” and “..” –> “.”. Basically, it always replaces two spaces with one, a space-period with a period, and a double period with a single period. For some reason, when using merge fields and fill-in fields, you end up with these extra spaces and periods everywhere. (This is especially true for me, whose Powerscribe profile is apparently irreparably glitchy and adds extra spaces before and after dictated text). The code:
4::
WinActivate, PowerScribe 360
Send ^h
Sleep, 100
Send, {Space}{Space}
Send {tab}
Send, {Space}
Send {tab} {tab} {tab}
Send {Enter} {Enter} {Escape}
 
Send ^h
Sleep, 100
Send {Space}.
Send {tab}
Send .
Send {tab} {tab} {tab}
Send {Enter} {Enter} {Escape}
 
Send ^h
Sleep, 100
Send ..
Send {tab}
Send .
Send {tab} {tab} {tab}
Send {Enter} {Enter} {Escape}
 
Send, {F12}
Return
In this case, you’ll notice the script ends with “F12”, which is the Powerscribe command to “sign report,” so be careful if copy/pasting. Also note that I call this series of replacements with the number “4”, which refers to the console I will describe later. Unless you are developing a console like mine, you probably won’t want to use something so commonly used as the number “4” to call a search-and-sign function.
As always, your uses will probably be a lot different than mine depending on your PACS/PS integration and your own workflow preferences, but hopefully this inspires some sense of the things you can do.
Automation II – Autohotkey replace