A pair of reporting pipelines that replace hours of monthly manual work. Pulls data from a secure server, processes it automatically, and produces clean, formatted Excel reports in under two minutes.
01
Billable Visit Report
How it works
From server to spreadsheet
01/ 04
Source
SFTP Server
Download
HARs + Visits CSVs
Process
Excel Macro
Output
Dated Report
01 — Data retrieval
Connects and downloads automatically
A PowerShell script prompts for credentials and connects to the SFTP server, scans the report folder for the source files, and downloads them to a local temp folder. Once downloaded, the originals are moved to an archive folder on the server with a timestamp so the folder stays clean and prior runs are preserved.
Source
SFTP Server
Download
HARs + Visits CSVs
Process
Excel Macro
Output
Dated Report
02 — Import
Data loaded into Excel in seconds
The script opens a copy of the Excel template and imports both CSVs directly into their respective sheets. The template already contains a VBA macro for formatting, so no setup is needed each run. A new dated file is created each time, so previous reports are never overwritten.
Source
SFTP Server
Download
HARs + Visits CSVs
Process
Excel Macro
Output
Dated Report
03 — Data processing
Data is cleaned and processed automatically
A VBA macro scrubs the imported data and links the separate reports together using a VLOOKUP function. Fields from the HAR data are then combined into their corresponding visits in order to classify them by Payer Group and Program Type.
Home Health Summary Auto-generated
Program
Payer Group
Accts
Visits
V/A
HH
Medicare
142
1,840
13.0
HH
Metroplus Episodic
89
967
10.9
HH
Healthfirst Episodic
74
720
9.7
HH
New York Medicaid
61
583
9.6
HH Total
366
4,110
11.2
04 — Summary output
Formatted report, ready to share
The macro builds a Summaries sheet broken down by Program Type and Payer Group, showing unique hospital account counts, total visits, visits per account, and individual counts for each of the six clinical disciplines. Program subtotals and a grand total are included automatically.
Background
Why this exists
The problem it solved
Every month, producing this report required manually modifying and running Epic reports, exporting CSV files, pulling the data into Excel, writing formulas, building the summary table, and formatting everything before it was ready to share. Start to finish it could take the better part of an hour, and it was prone to human error.
Because the final report requires merging data from multiple different databases, the final summary isn't able to be produced in a single Epic report. The data itself wasn't complicated — it was the repetition that was cumbersome. The same files, the same formulas, the same structure every single month. That kind of work is exactly what automation is for.
The solution was a PowerShell script that handles the file retrieval and a VBA macro that handles everything inside Excel. They're designed to work together: the script pulls the files and loads them into a dated copy of the template, then hands off to the macro, which processes the data and builds the summary. The whole process now completes in under two minutes.
Now, with one quick PowerShell prompt, I can compile an actionable report that our leadership team uses to analyze our visit utilization metrics. All of the time saved with this tool is freed up for me to complete other tasks.
02
Billing Percentage Report
How it works
Two snapshots, one answer
01/ 03
SFTP Server
All Charges
16th snapshot
23rd snapshot
+
Billed Charges
16th snapshot
23rd snapshot
01 — Four source files
Two dates, two report types
The report runs on four CSV files pulled from the server — a full list of all charges and a list of billed charges, each at two points in the billing cycle: the 16th and 23rd of the month. The PowerShell script finds all four files automatically by matching their date-stamped filenames, downloads them, and archives the originals.
3.16 All — Billed? column Auto-generated
Billed?
Transaction ID
Hospital Account
Primary Plan
Yes
TXN-00412
HA-8821
Medicare
Yes
TXN-00413
HA-8822
Metroplus
No
TXN-00414
HA-8823
Healthfirst
Yes
TXN-00415
HA-8824
Medicaid
No
TXN-00416
HA-8825
Medicare
02 — Cross-reference
Each charge is checked against the billed list
For each All Charges sheet, a VBA macro adds a "Billed?" column and checks whether each transaction ID appears in the corresponding Billed Charges sheet for that date. Results are stored as plain Yes/No values for clean analysis.
3.16 Summary
Billed?
Accts
%
Yes
591
85%
No
111
15%
Total
695
100%
3.23 Summary
Billed?
Accts
%
Yes
648
91%
No
64
9%
Total
712
100%
03 — Summary output
Side-by-side billing progress at a glance
Two summary sheets are generated, one for the 16th and one for the 23rd, each showing a count of distinct hospital accounts that have been billed vs. not billed. Comparing the two snapshots makes it easy to see how much progress was made in the week between runs.
Background
Why this exists
The problem it solved
Billing progress is a Key Performance Indicator that our agency management staff monitors to ensure AR collection isn't falling behind. This is another metric that Epic is not able to report on directly, but the necessary data is extractable. The challenge is that it meant pulling multiple files, cross-referencing them manually, and building a summary from scratch each time.
The core question is simple: of all the charges we have, how many have actually been billed? But answering it required matching two different lists against each other and counting unique accounts rather than individual transactions.
The report runs at two points in the month so you can see progress. The 16th snapshot captures an early read on the billing cycle; the 23rd shows how much ground was covered in the week after. The side-by-side summary makes that comparison immediate. We can then compare performance month-over-month to verify that we are getting clean claims billed out quickly and not falling behind at any point.
The automation handles everything from file retrieval to the final summary. The PowerShell script connects to the server, finds the four files, downloads and archives them, and loads the data into Excel. The macro takes it from there — filtering out excluded plan types, building the cross-reference, and producing the two summary sheets automatically.